C#笔记(40)if(){}try{}catch{}语句
try…catch 语句
用来测试代码中的错误,try 部分包含需要运行的代码,而 catch 部分包含错误发生时运行的代码。
用法
1 | try { |
实例
1 | try { |
finally子句
虽然在try-catch语句中是可选的,但finally子句一经使用,其代码无论如何都会执行。换句话说,try语句块中的代码全部正常执行,finally子句会执行;如果因为出错而执行了catch语句块,finally子句照样还会执行。只要代码中包含finally子句,则无论try或catch语句块中包含什么样的代码——甚至return语句,都不会阻止finally子句的执行。来看下面这个函数:
1 | try{ |
错误类型
1, Error
基类型,主要目的供开发人员抛出自定义错误。
2, EvalError
使用eval()函数而发生异常时抛出,eval() 函数可计算某个字符串,并执行其中的的代码。
3, RangeError
会在数值超出相应范围时触发。
4, ReferenceError
在找不到对象的情况下会发生ReferenceError,通常在访问不存在的变量时,就会发生这种错误
5, SyntaxError
把语法错误的字符串传入eval()函数时,就会导致此类错误
6, TypeError
执行特定于类型的操作时,变量的类型并不符合要求所致。
7, URIError
使用encodeURI()或decodeURI(),而URI格式不正确时,就会导致此错误
抛出错误
与try-catch语句相配的还有一个throw操作符,用于随时抛出自定义错误。抛出错误时,
必须要给throw操作符指定一个值。这个值是什么类型,没有要求。
在遇到throw操作符时,代码会立即停止执行。仅当有try-catch语句捕获到被抛出的值时
,代码才会继续执行。
创建自定义错误消息时,最常用的错误类型是Error、RangeError、ReferenceError和TypeError。
另外,利用原型链还可以通过继承Error来创建自定义错误类型。此时,需要为新创建的错误类型指
定name和message属性。
try-catch使用考量
使用try-catch最适合处理那些我们无法控制的错误,假设你在使用一个大型库中的函数,
该函数可能会有意无意地抛出一些错误。由于不能修改这个库的源代码,所以大可将对该
函数的调用放在try-catch语句当中。万一有什么错误发生,也好恰当地处理它们。
明明白白地知道自己的代码会发生错误时,再使用try-catch语句就不太合适了。例如,如果
传递给函数的参数是字符串而非数值,就会造成函数出错,那么就应该先检查函数的类型,然
后再决定如果去做。在这种情况下,不应该使用try-catch语句。