A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【济南校区】java基础-常见异常和自定义异常

我们常见的异常分类有编译时异常和运行时异常

1.1 编译时异常&运行时异常
A: 编译时期异常:是Exception的子类,非RuntimeExcpetion的子类,在编译时期必须处理
B:RuntimeException和他的所有子类异常,都属于运行时期异常。NullPointerException,ArrayIndexOutOfBoundsException等都属于运行时期异常.
运行时期异常的特点:
方法中抛出运行时期异常,方法定义中无需throws声明,调用者也无需处理此异常
运行时期异常一旦发生,需要程序人员修改源代码.
1.1.1 案例代码八:
[Java] 纯文本查看 复制代码
package com.itheima_01;

 

import java.io.FileWriter;

import java.io.IOException;

 

/*

 * 异常的分类:

运行时期异常:RuntimeException的子类就是运行时期异常,在编译时期可以自由选择处理或者不处理

编译时期异常:是Exception的子类,非RuntimeExcpetion的子类,在编译时期必须处理

 

 */

public class ExceptionDemo6 {

public static void main(String[] args) {

//System.out.println(2 / 0);


//String s = null;

//System.out.println(s.length());


try {

FileWriter fw = new FileWriter("a.txt");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}
1.2 自定义异常
需求:写一个方法,接受考试成绩,如果考试成绩的范围在0-100之间则属于正常,否则属于异常
1.2.1 案例代码九:
     当成绩不在0~100范围内,抛出一个运行时异常或者编译时异常,阻止程序继续向下执行
[Java] 纯文本查看 复制代码
    package com.itheima_01;[/align]
/*

 * 需求:写一个方法,接受考试成绩,如果考试成绩的范围在0-100之间则属于正常,否则属于异常

 *

 * throws:处理异常的一种方式,把异常抛出,由调用者来处理

 * throw:制造异常的方式,并且结束方法

 *

 * 注意:如果抛出(throw)的是编译时期异常,必须在方法声明处抛出(throws)

 *

 * 如何自定义一个异常类呢?

 * 非常简单,写一个类去继承Exception或者RuntimeException,然后实现多个构造即可

 *

 *  */

public class ExceptionDemo7 {

public static void main(String[] args) {

/*boolean flag = checkScore(-10);

System.out.println(flag);*/




try {

checkScore(110);

} catch (Exception e) {

//System.out.println(e.getMessage());

e.printStackTrace();

}



//checkScore(110);

}


/*        public static boolean checkScore(int score) {

//判断考试成绩是否符合范围,如果不符合则返回false

if(score < 0 || score > 100) {

return false;

}


//符合

return true;


}*/


public static void checkScore(int score) throws Exception {

if(score < 0 || score > 100) {

throw new RuntimeException("考试成绩不符合要求");

//throw new Exception("考试成绩不符合要求");

}


System.out.println("考试成绩符合要求");

}



}
  
1.2.2 案例代码:
      我们也可以自定义一个编译时异常或者运行时异常来抛出:
[Java] 纯文本查看 复制代码
  package com.itheima_01;[/align]
 

public class MyException extends /*RuntimeException*/ Exception{

 

public MyException() {

super();

// TODO Auto-generated constructor stub

}

 

public MyException(String message) {

super(message);

// TODO Auto-generated constructor stub

}

/*public MyException() {

super();

}


public MyException(String s) {

super(s);

}*/



}
[Java] 纯文本查看 复制代码
package com.itheima_01;

/*

 * 需求:写一个方法,接受考试成绩,如果考试成绩的范围在0-100之间则属于正常,否则属于异常

 *

 * throws:处理异常的一种方式,把异常抛出,由调用者来处理

 * throw:制造异常的方式,并且结束方法

 *

 * 注意:如果抛出(throw)的是编译时期异常,必须在方法声明处抛出(throws)

 *

 * 如何自定义一个异常类呢?

 * 非常简单,写一个类去继承Exception或者RuntimeException,然后实现多个构造即可

 *

 *  */

public class ExceptionDemo7 {

public static void main(String[] args) {

/*boolean flag = checkScore(-10);

System.out.println(flag);*/




try {

checkScore(110);

} catch (Exception e) {

//System.out.println(e.getMessage());

e.printStackTrace();

}



//checkScore(110);

}


 

public static void checkScore(int score) throws Exception {

if(score < 0 || score > 100) {

 

throw new MyException("考试成绩不符合要求");

}


System.out.println("考试成绩符合要求");

}



}

如果你想了解更多黑马课程,如果你想加入黑马这个大家庭学习先进技术,光交天下好友,那就快来吧!
     黑马程序员济南中心联系电话:0531-55696830

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马