委托的定义:
委托关键字(delegate) 返回类型 委托类型标识符 (参数列表);
通过委托类型创建的变量只能被与委托类型具有相同的返回类型和参数列表的函数的函数名赋值
赋值之后这个委托变量就指向了函数名所对应的函数的函数引用
此时我们就能通过这个委托变量来直接执行函数功能了 --- 执行方式:
委托变量名(参数) --- 这样子调用后执行的功能是赋值给委托变量的函数的功能
为什么要出现委托?
委托的出现是为了解决在只有变量能够作为函数参数的情况下,函数如何作为函数参数的问题:
通过将函数委托给委托变量,然后将委托变量作为函数参数的方式,我们就能够间接的将函数作为参数了
将函数名作为参数传给委托变量,然后再通过委托变量调用函数 --- 在这种条件下只要功能一定,我不需要知道你设定什么函数名(因为这个函数名是需要你传给我的),我都能直接调用这个功能
委托的出现就是为了解决在不知道函数名但知道函数功能的情况下我们该如何调用函数
解决方法就是暂时将函数名委托给委托变量,你要改的时候直接传给委托变量更改就行
通过这种委托的方式我们不需要提前知道函数名才去调用函数实现功能
委托变量可以被NULL赋值为空
异常处理语句
try的花括号中放的是可能出现异常的代码
catch的圆括号中放的是我们要捕捉的异常
finally的花括号中放的是不管任何情况下都会执行的代码
1.同上try中放的是可能出现异常的代码
2.catch使用的时候首先要在圆括号中创建一个对象e --- 这个对象e的类型是我们想要捕捉的错误类型,比如下面这张图中的错误类型就是数组访问越界类型
3.可以同时有多个catch存在,如果catch从try的花括号中的代码捕捉到了自己圆括号中的错误类型,那么此时try中出现错误的代码就会停止运行,转而去执行catch的花括号中的代码
如果没有捕捉到圆括号中的错误类型的话,catch的花括号中的代码就不会被执行
4.无论try中的代码是否出现异常,finally的花括号中的代码无论都必须被执行
5.try和finally都可以有0个或1个(但是无try必有finally,无finally必有try,然后二者可同时存在)
catch可有0个或多个
6.有的时候哪怕出现程序异常了我们也需要去执行某些操作的话,finally就排上了用场
当程序出现异常的时候有三种情况:
一.没有try-catch-finally : 程序直接中断 ,某些哪怕程序异常也必须执行的操作也会不被执行
二.只有try-catch:程序出现异常后只会继续执行对应catch中的代码,某些哪怕程序异常也必须执行的操作依然不会被执行
三.有try-catch-finally:哪怕程序出现了异常,无论如何都会执行finally中的代码,那么那些哪怕程序异常也必须执行的操作就可以放到finally中执行了
7.当直接写个catch而不加圆括号的时候,try的花括号中的代码出现任何异常都会自动跳转到这个catch,并执行这个catch的花括号中的代码