// Kotlin 1.3.11 编译器版本
// 无包声明
import java.io.IOException

// 定义类 A1,添加构造函数初始化 AAA1
class A1(val AAA1: String) {
    // var AAA1: String? = null; // 不再需要这个可空的属性声明,因为已经通过构造函数初始化
}

fun main() {
    // 集中声明变量,更像 C 语言风格
    var SSS1: String = "abc";
    var EEE1: Int? = null;
    // 创建 A1 实例时传入非空字符串
    var GGG1: A1 = A1("some value"); 
    var SSS2: String? = null;
    var EEE2: String = "";
    var GGG2: A1 = A1("another value"); 
    var SSS3: String? = null;
    var EEE3: String = "";

    // 异常抛出示例
    try {
        throw Exception("Hi There!");
    } catch (e: Exception) {
        println("cat1 捕获到异常: ${e.message}");
    }

    // try...catch...finally 示例
    try {
        println("cat2 尝试执行一些代码");
    } catch (e: RuntimeException) {
        println("cat3 捕获到运行时异常: ${e.message}");
    } finally {
        println("cat4 这是 finally 块,无论是否有异常都会执行");
    }

    // try 作为表达式示例
    EEE1 = try {
        SSS1.toInt();
    } catch (e: NumberFormatException) {
        null;
    };
    println("cat5 try 表达式的结果: $EEE1");

    // Nothing 类型示例:在 Elvis 表达式中使用 throw
    SSS2 = GGG1.AAA1;
    EEE2 = if (SSS2 != null) {
        SSS2;
    } else {
        throw IllegalArgumentException("Name required");
    };
    println("cat6 处理后的结果: $EEE2");

    // Nothing 类型示例:定义永远不会返回的函数
    fun A2_DDD1(message: String): Nothing {
        throw IllegalArgumentException(message);
    }
    SSS3 = GGG2.AAA1;
    EEE3 = if (SSS3 != null) {
        SSS3;
    } else {
        A2_DDD1("Name is missing for another person");
    };
    println("cat7 最终结果: $EEE3");

    // 受检异常相关说明示例
    @Throws(IOException::class)
    fun A3_DDD2(): Unit {
        throw IOException("模拟 IO 异常");
    }
    try {
        A3_DDD2();
    } catch (e: IOException) {
        println("cat8 捕获到模拟的 IO 异常: ${e.message}");
    }
}
 

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐