Kotlin学习笔记5-9 其他-异常

本文介绍Kotlin中的异常处理机制,包括异常类、throw表达式、try表达式等,并探讨了Kotlin如何通过这些机制简化异常处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常

Kotlin官网:Other-Exceptions

异常类

Kotlin中异常都是Throwable的子类。
异常包含消息、堆栈追踪、原因(可选)。
使用throw表达式抛出异常:

throw MyException("Hi There!")

使用try表达式捕获异常:

try {
    // some code
}
catch (e: SomeException) {
    // handler
}
finally {
    // optional finally block
}

try表达式中,catch可以有0,1或多个,finally也可以省略,但是catch和finally至少要有一个。

Try表达式

Kotlin中try为表达式,有返回值:

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

try表达式的返回值为try块的最后一行或者catch的块的最后一行,finally不会影响表达式的值。

检查异常

Kotlin中没有检查异常,这么做的原因有很多,举个例子,JDK中StringBuilder类实现的接口:

Appendable append(CharSequence csq) throws IOException;

这个方法签名说明每次调用都可能抛出IOException,所以在调用的地方要处理:

try {
    log.append(message)
}
catch (IOException e) {
    // Must be safe
}

这样写并不好,Effective Java中提到:不要忽略异常

Nothing类

Kotlin中throw语句是表达式,有返回值,例如可以用在Elvis表达式中:

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

throw表达式的返回值是Nothing类,没有任何实际的值,可以用作语句未执行的标识:

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

在调用这个函数时,编译器就知道会中断后面的内容:

val s = person.name ?: fail("Name required")
println(s)     // 's' is known to be initialized at this point

另一个Nothing类的用处是类型推导,可空类型Nothing?只有一个可能的值null。当使用null初始化一个没有指明类型的变量时,编译器会将变量类型推导为Nothing?类:

val x = null           // 'x' has type `Nothing?`
val l = listOf(null)   // 'l' has type `List<Nothing?>

Java交互

详见Kotlin官方文档Calling Java from Kotlin

内容概要:本文详细探讨了杯形谐波减速器的齿廓修形方法及寿命预测分析。文章首先介绍了针对柔轮与波发生器装配时出现的啮合干涉问题,提出了一种柔轮齿廓修形方法。通过有限元法装配仿真确定修形量,并对修形后的柔轮进行装配和运转有限元分析。基于Miner线性疲劳理论,使用Fe-safe软件预测柔轮寿命。结果显示,修形后柔轮装配最大应力从962.2 MPa降至532.7 MPa,负载运转应力为609.9 MPa,解决了啮合干涉问题,柔轮寿命循环次数达到4.28×10⁶次。此外,文中还提供了详细的Python代码实现及ANSYS APDL脚本,用于柔轮变形分析、齿廓修形设计、有限元验证和疲劳寿命预测。 适合人群:机械工程领域的研究人员、工程师,尤其是从事精密传动系统设计和分析的专业人士。 使用场景及目标:①解决杯形谐波减速器中柔轮与波发生器装配时的啮合干涉问题;②通过优化齿廓修形提高柔轮的力学性能和使用寿命;③利用有限元分析和疲劳寿命预测技术评估修形效果,确保设计方案的可靠性和可行性。 阅读建议:本文涉及大量有限元分析和疲劳寿命预测的具体实现细节,建议读者具备一定的机械工程基础知识和有限元分析经验。同时,读者可以通过提供的Python代码和ANSYS APDL脚本进行实际操作和验证,加深对修形方法和技术路线的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值