Java 异常处理机制

try{

//有可能出现异常的语句

}catch(Exception e){ //匹配异常类型

//编写异常的处理语句

    System.out.println(e);    //一般写法

e.printStackTrace() //打印信息

}catch()...//多个catch()

 

finally{

//一定会运行的代码

}
 

Throwable的子类Exception、Error

Exception:一般表示程序中出的问题,可以直接用try...catch处理        //一般都用这个来捕获错误

Error:一般指的是JVM错误,程序中无法处理(JVM就是java虚拟机);

 

  • throws和throw
  1. throws:
class ListSetMap {

public static void main(String[] args) {

//要调用此方法就必须处理

try{

fun();

}catch(Exception e){

    System.out.println(e);

}

}

public static void fun() throws Exception{ //下面不用处理异常

System.out.println(1/0);

}

}

 

输出

java.lang.ArithmeticException: / by zero

2.throw

class ListSetMap {

public static void main(String[] args) {

try{

throw new Exception("自己抛出的异常");    //直接抛出异常

}catch(Exception e){

System.out.println(e);

}

}

}

注意:throw 一般都不会单独使用

  • 自定义异常类
class MyException extends Exception{

public MyException(String msg){

super(msg);    //调用父类构造方法

}

}

class ListSetMap { public static void main(String[] args) { try{ throw new MyException("自定义异常"); //对象 }catch(Exception e){ System.out.println(e); } } }

输出

MyException: 自定义异常

  • 断言
  1. assert boolean表达式;
class ListSetMap {

public static void main(String[] args) {

int x[]={1,2,3};

assert x.length==0:"数组长度不为0"; //"是打印错误的信息

}

}

肯定x的长度为0,输出为

Exception in thread "main" java.lang.AssertionError: 数组长度不为0

at ListSetMap.main(ListSetMap.java:4)

注意:断言返回的虽然是boolean值,但是不能作为条件判断

            一般开发并不提倡用断言

 

你可能感兴趣的:(Java-入门,java,异常)