第十二周总结
异常处理
1.所有异常都发生在运行阶段的,异常如果不处理就会终止运行,项目中就会使服务器停止运行
2.所有的异常都是一个类,都是继承自Exception
3.异常是可以处理的,可以进行上抛(throws)和解决(try {}catch{})的。而错误不行,错误会使gvm直接终止运行
4.编译时异常又叫做受控异常(CheckException),受检异常,编译时异常一般发生的概率比较高。对于一些发生概率较高的异常,需要在运行之前对其进行预处理。
5.运行时异常又叫做未受控异常和未受检异常运行时异常一般发生的概率比较低。
try catch
格式
try {
//尝试执行的代码块
}
catch (异常类型1 异常的变量名1) {
//捕获错误的代码块1
}
...
catch (异常类型2 异常的变量名2) {
//捕获错误的代码块2
}
finally {
//最终执行的代码块
}
catch 和 finally 语句都是可选的,但你在使用 try 语句时必须至少使用一个。catch 可以有多个,当所有的 catch 都不满足时,再执行 finally 里的代码。
也就是try必须有一个catch或者Finally与它对应,try和Finally可以单端出现
getMessage() 的作用是拿出异常构造方法中构建时传入的参数
printStackTrace() 的作用是打印异常的详细信息
try里面的异常发生后面的代码不执行,也就意味着当代码段里面有俩处代码异常时,只能捕捉到上面那个异常
public class Run2
{
public static void main(String[] args)
{
int a=10;
int b= 1;
int z;
String s=null;
try
{
a=10;
b= 0;
System.out.println(s.length());
z=a/b;
}
catch (NullPointerException x)//捕捉空指针异常
{
String g=x.getMessage();
System.out.println(g);
}
catch(RuntimeException x)//捕捉by zore 异常
{
x.printStackTrace();
}
}
}