b站异常处理视频[Java 异常类基础知识_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1NC4y1t7eJ/?spm_id_from=333.337.search-card.all.click&vd_source=ad35b9cd13c2a461705962e914384eb2)
异常处理分为两种方式:try/catch 和 throw/throws
一、try/catch
try/catch整个结构
try{
包含可能发生异常的语句
}
catch(ExceptionSubClass1 e){
//ExceptionSubClass1 是Exception的子类
}
catch(ExceptionSubClass2 e){
...
}finally{一定会处理的代码}
二、自定义异常类
我们也可以用Exception类定义自己的异常类
1.先自定义一个异常类,这个类一般都是继承Exception //Exception是异常总类
例如
XYZException异常类
public class XYZException extends Exception{//当输入XYZ时,抛出异常“This is a XYZ”
String message;
public XYZException(String str){//构造函数中不能有return语句,所以要再写个ToString方法
message="This is a "+str;
}
public String ToString()
{
return message;
}
}
主程序
public static void main(String[] args) throws XYZException{
Scanner input = new Scanner(System.in);
try {
String str = input.next();
if(str.equals("XYZ"))
{
throw new XYZException(str);
}
}catch(XYZException e)
{
System.out.println(e.ToString());
}finally {
System.out.println("程序结束");
}
}
2. 我们要在会使用到这个异常的方法声明后throws 该异常,throws句的后面可以抛出的异常必须是Throwable或其子类的实例,这里是main主函数中用到了异常处理,故在最开始psvm后面throws XYZException
3. 要加try/catch 对要检查的语句进行try,符合自定义异常的要求的话,就抛出一个异常,一般都是子类的实例化,如这里的throw new XYZException(str)然后catch(XYZException e){}
4. 最后要有一个finally 一般都是提示程序结束 ,减轻finally的任务,不要在finally中做一些其它的事情,finally块仅仅用来释放资源是最合适的。