异常(**)Exception
作者:互联网
异常(**)Exception
1. 异常概念
-
程序中的错误就称为异常。
-
java 程序中的错误【异常】,如果程序中出了异常,那么该异常会以对象的形式存在。异常对象由底层的jvm 创建。
-
如果你的程序有问题,那么jvm会生成一个针对该异常的一个对象,并抛给你。
2. 异常体系
-
Throwable
-
Error
-
Exception
-
RuntimeException
-
CheckedException
-
-
3. try-catch
private static void test() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入被除数:");
int a = scanner.nextInt();
System.out.println("请输入除数:");
int b = scanner.nextInt();
int result = 0;
try{
//可能产生异常的代码。
result = a / b;
System.out.println(2);
}catch(ArithmeticException e){
//catch 小括号类似于方法的参数。写的是产生的异常对象的类型。
System.out.println(e);
System.out.println("您输入了非法的被除数:0");
}
System.out.println(a +"\t除以\t" + b + "\t的结果是:"+result);
System.out.println("谢谢使用!!");
}
4. 多重 catch
private static void test() {
Scanner scanner = new Scanner(System.in);
int result = 0;
try{
System.out.println("请输入被除数:");
int a = scanner.nextInt();
System.out.println("请输入除数:");
int b = scanner.nextInt();
//可能产生异常的代码。
result = a / b;
System.out.println(2);
System.out.println(a +"\t除以\t" + b + "\t的结果是:"+result);
}catch(ArithmeticException e){
//catch 小括号类似于方法的参数。写的是产生的异常对象的类型。
// 打印异常对象的堆栈信息
e.printStackTrace();
// System.out.println("您输入了非法的被除数:0");
}catch(InputMismatchException e){
// System.out.println("您输入了非数值型数据!");
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
System.out.println("谢谢使用!!");
}
5. try-catch-finally
-
private static void test() {
Scanner scanner = new Scanner(System.in);
int result = 0;
try{
System.out.println("请输入被除数:");
int a = scanner.nextInt();
System.out.println("请输入除数:");
int b = scanner.nextInt();
//可能产生异常的代码。
result = a / b;
System.out.println(2);
System.out.println(a +"\t除以\t" + b + "\t的结果是:"+result);
}catch(ArithmeticException e){
//catch 小括号类似于方法的参数。写的是产生的异常对象的类型。
//打印异常对象的堆栈信息
e.printStackTrace();
//System.out.println("您输入了非法的被除数:0");
System.out.println(1/0);
}catch(InputMismatchException e){
//System.out.println("您输入了非数值型数据!");
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
//最终一定会被执行的代码。
System.out.println("谢谢使用!!");
}
} -
6. try-finally
7. 面试题
static int test5(){
int num = 10;
try {
//先计算返回值。10
//最后返回先前计算的返回值。10
return num;
} finally {
//然后执行这里。11
num ++;
System.out.println(num);
}
}
8. throw
-
throw 是java的关键字。
-
用在方法体中,用于抛出异常对象。
-
只能抛出一个异常对象。
-
9. throws
-
throws 是java的关键字。
-
用在方法的声明处。用于标注,方法执行的时候可能会抛出的异常对象的类型。
-
语法:参数列表和方法体中间使用:throws 异常类型。
-
异常类型可以是一个列表,使用逗号分隔。
-
// 编译期异常的第二种解决方案。不建议的解决方案。告诉调用者,我这个方法,可能会抛出某种类型的异常对象。
private static void test1() throws IOException,ArithmeticException {
File file = new File("");
// 编译期异常的第一种解决方案。建议的解决方案。
file.createNewFile();
} -
10. 自定义异常
-
package com.qf.exception;
public class TestAgeException {
public static void main(String[] args) {
Student student = new Student();
try {
student.setAge(70);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Student{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) throws AgeException,Exception{
if(age < 0){
// 抛出一个异常对象。自定义的异常对象。
AgeException e = new AgeException(age);
throw e;
}else if(age >60){
throw new Exception("过大的学生的年龄:"+age);
}
this.age = age;
}
}
//自定义年龄异常类。
class AgeException extends Exception{
private int age;
public AgeException(int age) {
super();
this.age = age;
}
@Override
public String toString() {
return "您设置了非法的年龄:"+age;
}
}
总结
-
try-catch-finally的使用。
-
throws的使用
-
throw的使用
-
编译期异常的处理方法
-
package com.qf.exception;
import java.io.File;
import java.io.IOException;
public class TestCheckedException {
public static void main(String[] args) {
try {
test1();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void test() {
File file = new File("");
// 编译期异常的第一种解决方案。建议的解决方案。使用try-catch 结构捕获处理。
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
// 编译期异常的第二种解决方案。不建议的解决方案。告诉调用者,我这个方法,可能会抛出某种类型的异常对象。
private static void test1() throws IOException,ArithmeticException {
File file = new File("");
// 编译期异常的第一种解决方案。建议的解决方案。
file.createNewFile();
}
}
-
-
异常体系
标签:Exception,int,System,catch,println,异常,out 来源: https://www.cnblogs.com/bxmhdh/p/16545751.html