----------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!------------
异常类
概念:
在程序开发过程中,可能存在的错误,有些错误是可以避免的,而有些错误确是意想不到的,在java中把这些可能发生的错误称为异常。
异常类的继承关系图如下所示
一、异常的分类在项目中创建example类,在该类中加载一个不存在的类,观察发生的异常
public class example{
private int num=10; //成员变量
public int getNum(){ //成员方法
return num; //返回成员变量值
}
public void setNum(int num){ //成员方法
this.num=num; //设置成员变量的值
}
public example(){ //类的构造方法
try{
Class.forName("com.mingrisoft.test");//装载com.mingrisoft.test包中的test类
}catch(ClassNotFoundException e){
e.printStackTrace();
}
System.out.println("测试"); //在控制台输出“测试”
}
public static void main(String args[]){
example exam=new example(); //创建类的实例
exam.setNum(8888); //调用setNum()方法设置成员变的值
System.out.println(exam.getNum()); //调用getNum()方法输出成员变的值
}
}
运行结果:
int number={1,4,7,7,8,9} //创建并初始化具有6个元素的数组
public void setNum(iont index, int value){ //根据索引值index为数组元素赋值value的方法
number[index]=value;} //为数组中索引值index出的元素赋值value
public int getNum(int index){ //根据索引值index获取数组中对应元素值的方法
return number[index] //获取数组中索引值index处的元素
}
public static void main(String args[]){
example ex=new example();
int value=ex.getNum(0); //调用方法获取数组索引值0处的元素值
System.out.println(value);
value=ex.getNum(6); //创建并初始化具有6个元素的数组索引值6超出数组下标的范围,导致异常
System.out.println(value);
value=ex.getNum(8);
System.out.println(value);
}
运行结果:
二、获取异常信息下面通过一个程序来说明问题
public class example{
public void printBuglinfo(){ //定义成员方法
try{
int x=100; //定义局部变量
int y=0; //定义局部变量
int z=x/y;
System.out.println(x+"除以"+y+"的商是: "+z);
}catch(Exception ex){
ex.printStackTrace(); //输出异常到 标准错误流
System.out.println("getMessage的方法:"+ex.getMessage()); //使用getMessage()方法输出异常信息
System.out.println("getLocalizedMessage的方法:"+ex.getLocalizedMessage()); //使用getLocalizedMessage()方法输出异常信息
System.out.println("toString的方法:"+ex.toString()); //使用toString()方法输出异常信息
}
public static void main(String args[]){
example ex=new example();
ex.printBuglinfo();
}
}
public class Demo {
int div(int a,int b)throws Exception//在功能上通过throws的关键字声明了该功能有可能会出现问题。
{
return a/b;
}
public static void main(String[] args) throws Exception
{
Demo d = new Demo();
try
{
int x = d.div(4,0);
System.out.println("x="+x);
}
catch (Exception e)
{
System.out.println(e.toString());
}
System.out.println("over");
}
}
public class myException extends Exception { // 创建自定义异常类
String message; // 定义String类型变量
public myException(String ErrorMessagr) { // 父类方法
message = ErrorMessagr;
}
public String getMessage() { // 覆盖getMessage()方法
return message;
}
}
public class Captor { // 创建类
static int quotient(int x, int y) throws myException { // 定义方法抛出异常
if (y < 0) { // 判断参数是否小于0
throw new myException("除数不能是负数"); // 异常信息
}
return x / y; // 返回值
}
public static void main(String args[]) { // 主方法
try { // try语句包含可能发生异常的语句
int result = quotient(3, -9); // 调用方法quotient()
} catch (myException e) { // 处理自定义异常
System.out.println(e.getMessage()); // 输出异常信息
} catch (ArithmeticException e) { // 处理ArithmeticException异常
System.out.println("除数不能为0"); // 输出提示信息
} catch (Exception e) { // 处理其他异常
System.out.println("程序发生了其他的异常"); // 输出提示信息
}
}
}
public class MyException extends Exception {
String message;
public MyException(String ErrorMessagr) {
message = ErrorMessagr;
}
public String getMessage(){
return message;
}
}
public class Computer {
public static int getMaxComm(int m , int n) throws MyException{
if( m <= 0 ||n<=0){
throw new MyException("传递的参数不是正整数");
}
if(m < n){
int temp = 0;
temp = m;
m = n;
n = temp;
}
int r = m % n;
while(r!=0){
m = n;
n = r;
r = m % n;
}
return n;
}
public static void main(String[] args) {
try {
int m = 122 , n= 0;
int reslut = getMaxComm(m,n);
System.out.println(m+" 和 "+n+"的最大共约数是:"+reslut);
} catch (MyException e) {
e.printStackTrace();
}
}
}