Kotlin笔记 九 异常处理

异常处理

Kotlin中与Java中异常区别:

Kotlin抛弃了checked异常,相当于所有异常都是运行时异常,意味着程序员想捕获就捕获,不想捕获也可以,不需要使用throws关键字声明抛出异常;

异常处理机制语法

	try{


	}catch(e:Ex.ception){


	}finally{}

包含1个try块,0~N个catch块(异常类型应该子异常在前父异常在后,否则子异常将永远得不到执行),0~1个finally块,但是catch与finally块必须至少出现其一;

工作原理:

try块中的代码出现异常,系统会自动生成一个异常对象,将该异常对象交给运行时环境,该过程叫做抛出异常;运行时环境获取异常对象,会找寻能处理该异常对象的catch块,找到就将该异常交给该catch块处理,该过程称为捕获异常,否则,运行时环境中止,程序退出;

需要注意的是:catch、try中如果执行到return语句,正常来说就该退出,但是如果此时还有finally块,会向转向执行完finall块,再回来执行该return语句;

		try{

			....
			return
		}catch(){

			return 
		}finally{

			......
		
		}

还有一种情况如果catch、try、finally块中都有return,那么catch、try块的return语句将永远得不到执行;

	try{

		。。。

		return
	}catch(){
		
		return
	}finally{
		
		return或者throw语句
	}

如果在异常处理代码中使用System.exit(1)语句来退出虚拟机,finally块将不会被执行;

异常处理嵌套

即try块、catch、finally块中有可以嵌入完整的try…catch…finally,通常嵌套不应该超过两层;

try表达式

和if语句一样,try语句也可以作为表达式,表达式可以赋值给变量,表达式的值为try块中最后一个表达式的值或者catch块中最后一个表达式的值,finally块中的语句对表达式的值没有任何影响;

throw抛出异常

和Java类似,Kotlin允许抛出异常;

语法:

	throw 异常实例

***由于kotlin没有checked异常(即使该异常在Java中是checked异常,在Kotlin中也不是checked异常)***,因此Kotlin抛异常无需放在try块中,程序既可显示使用try…catch捕获,也可完全不用理会该异常,将改一次交给该方法调用者处理;

自定义异常

自定义异常都应该继承Exception基类,定义异常是通常需要提供两个构造器:一个无参构造器,一个带字符串的构造器(该字符串将作为异常对象的描述信息,即异常对象的message属性返回值)

throw表达式

throw语句也可以作为表达式,但throw表达式的类型是Nothing类型,因此很少将throw语句赋值给其他变量。

关于Nothing类

这是Kotlin提供的一个特殊的类,专门用于表示永远不存在的对象;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值