选用教材:《Java核心技术卷一》
第七章 异常、断言和日志
一、异常的几种类型
1、Throwable类的几个分支
①Error:运行时系统内部错误、资源耗尽错误等;
②Exception:异常;
2、Exception的几个分支
①IOException:I/O错误;
②Runtime Exception:编程错误;
3、异常的几种类型
①非检查型异常:Error、RuntimeException;
②检查型异常:所有其他类型的异常。
我们能处理的是检查型异常。
二、处理异常的几种方法
1、throws子句
直接在有可能抛出异常的方法名后增加一个throws子句,例如:
Public void main (String[] args) throws IOException
{
}
2、try-catch语句块
try语句里放的是要执行的逻辑,catch语句则是用来捕获异常的。
3、try-with-Resources语句
这一种形式最为常见,例如:
try(var in=new Scanner(System.in))
{
...... //代码块
}
三、一些有关于异常的练习题
1、计算圆的面积,半径不能为0和负数。
package stackTrace; import java.util.Scanner; /** * 计算圆的面积,半径不能为0和负数。 * @author Administrator * */ public class CircleArea { public static void main(String[] args) throws NumberException { try(var in=new Scanner(System.in)) { System.out.print("请输入圆的半径:"); double n=in.nextDouble(); if(n<=0) { throw new NumberException(); } System.out.println("圆的面积为(cm):"+CountingArea(n)); } catch(NumberException e) { e.printStackTrace(); } } public static double CountingArea(double n) { return n*n*Math.PI; } }
2、求平均数,参数不能为负。
package stackTrace; import java.io.IOException; import java.util.Scanner; /** * 求平均数,参数不能为负数 * @author Administrator * */ public class AverageNum { public static void main(String[] args) { try(var in=new Scanner(System.in)) { System.out.println("请依次输入3个正数:"); double m=in.nextDouble(); double n=in.nextDouble(); double s=in.nextDouble(); if(m<0 || n<0 ||s<0) { throw new IOException("你传了至少一个负数!"); } else { AverageNum av=new AverageNum (); System.out.println("3个数的平均数是:"+av.CountingAvg(m, n, s)); } } catch(IOException e) { e.printStackTrace(); } } public AverageNum() { // TODO Auto-generated constructor stub } public double CountingAvg(double m,double n,double s) { return (m+n+s)/3; } }