kotlin更多語言結(jié)構(gòu)——>異常-創(chuàng)新互聯(lián)

異常類kotlin更多語言結(jié)構(gòu)——&g
t;異常

Kotlin 中所有異常類都是 Throwable 類的子孫類。每個(gè)異常都有消息、堆?;厮菪畔⒁约翱蛇x的原因

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)由有經(jīng)驗(yàn)的網(wǎng)站設(shè)計(jì)師、開發(fā)人員和項(xiàng)目經(jīng)理組成的專業(yè)建站團(tuán)隊(duì),負(fù)責(zé)網(wǎng)站視覺設(shè)計(jì)、用戶體驗(yàn)優(yōu)化、交互設(shè)計(jì)和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、成都網(wǎng)站制作、成都網(wǎng)站建設(shè)易于使用并且具有良好的響應(yīng)性。

使用 throw-表達(dá)式來拋出異常

throw Exception("Hi There!")

使用 try-表達(dá)式來捕獲異常:

try { // 一些代碼 } catch (e: SomeException) { // 處理程序 } finally { // 可選的 finally 塊 }

可以有零到多個(gè) catch 塊。finally 塊可以省略。但是 catch 與 finally 塊至少應(yīng)該存在一個(gè)

Try 是一個(gè)表達(dá)式

try 是一個(gè)表達(dá)式,即它可以有一個(gè)返回值

val a: Int? = try { parseInt(input) } catch (e: NumberFormatException) { null }

try-表達(dá)式的返回值是 try 塊中的最后一個(gè)表達(dá)式或者是(所有)catch 塊中的最后一個(gè)表達(dá)式。finally塊中的內(nèi)容不會(huì)影響表達(dá)式的結(jié)果

受檢的異常

Kotlin 沒有受檢的異常。這其中有很多原因,但我們會(huì)提供一個(gè)簡(jiǎn)單的例子。

以下是 JDK 中 StringBuilder 類實(shí)現(xiàn)的一個(gè)示例接口

Appendable append(CharSequence csq) throws IOException

這個(gè)簽名是什么意思?它是說,每次我追加一個(gè)字符串到一些東西(一個(gè) StringBuilder、某種日志、一個(gè)控 制臺(tái)等)上時(shí)我就必須捕獲那些 IOException 。為什么?因?yàn)樗赡苷趫?zhí)行 IO 操作( Writer 也實(shí)現(xiàn)了Appendable )...... 所以它導(dǎo)致這種代碼隨處可?的出現(xiàn)

try { log.append(message) } catch (IOException e) { // 必須要安全 }

Nothing 類型

在 Kotlin 中 throw 是表達(dá)式,所以你可以使用它(比如)作為 Elvis 表達(dá)式的一部分:

val s = person.name ?: throw IllegalArgumentException("Name required")

throw 表達(dá)式的類型是特殊類型 Nothing。該類型沒有值,而是用于標(biāo)記永遠(yuǎn)不能達(dá)到的代碼位置。在你自己的代碼中,你可以使用 Nothing 來標(biāo)記一個(gè)永遠(yuǎn)不會(huì)返回的函數(shù)

fun fail(message: String): Nothing { throw IllegalArgumentException(message) }

當(dāng)你調(diào)用該函數(shù)時(shí),編譯器會(huì)知道在該調(diào)用后就不再繼續(xù)執(zhí)行了

val s = person.name ?: fail("Name required") println(s) // 在此已知“s”已初始化

可能會(huì)遇到這個(gè)類型的另一種情況是類型推斷。這個(gè)類型的可空變體 Nothing? 有一個(gè)可能的值是 null 。 如果用 null 來初始化一個(gè)要推斷類型的值,而又沒有其他信息可用于確定更具體的類型時(shí),編譯器會(huì)推斷出Nothing? 類型

val x = null // “x”具有類型 `Nothing?` val l = listOf(null) // “l(fā)”具有類型 `List<Nothing?>

文章名稱:kotlin更多語言結(jié)構(gòu)——&gt;異常-創(chuàng)新互聯(lián)
本文路徑:http://muchs.cn/article38/ioisp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣、微信公眾號(hào)、App設(shè)計(jì)、品牌網(wǎng)站建設(shè)、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)