JAVA#异常'学习札记

1.在Java中,程序总会遇到各种各样不正常的情况,这些不正常的情况称之为“异常”;异常分为两大类,一类为“Error”,这类异常是JVM无法解决的“Tough”问题,此类错误是调整程序也无法解决的异常;另一类为“Exception”,这类错误通常可以用特定代码来进行处理;

2.Exception分为编译时异常和运行时异常,

1️⃣编译时异常:在编译期间会进行的异常(执行javac.exe);

2️⃣运行时异常:在运行期间会出现的异常(执行java.exe);

3.常见运行时异常

1️⃣数组下标越界异常

@Test
    public void Shuzu(){
        int[] kobe=new int[5];
        System.out.println(kobe[6]);
    }
java.lang.ArrayIndexOutOfBoundsException: 6

2️⃣运算异常

 @Test
    public void Yunsuan(){
        int kobe=666;
        System.out.println(kobe/0);
    }
java.lang.ArithmeticException: / by zero

3️⃣类型转换异常

 @Test
    public void Leixing(){
        Object Kobe=new Date();
        String kobe=(String)Kobe;
    }
java.lang.ClassCastException: java.util.Date cannot be cast to java.lang.String

4️⃣空指针异常

@Test
    public void Pointer(){
        Object kobe;
        kobe=null;
        System.out.println(kobe.toString());

    }
java.lang.NullPointerException

4.异常处理;

1️⃣.1  try-catch-finally

public class Monica{
    @Test
    public void Pointer() {
        try{
        Object kobe;
        kobe = null;
        System.out.println(kobe.toString());
             }
        catch (NullPointerException e){
            e.getStackTrace();
            System.out.println(e.getMessage());
            System.out.println("出现空指针异常的啦");
        }
        finally {
            System.out.println("必须要执行的代码");
        }

    }
}
/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java -ea -Didea.launcher.port=7533 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 14.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Applications/IntelliJ IDEA 14.app/Contents/lib/idea_rt.jar:/Applications/IntelliJ IDEA 14.app/Contents/plugins/junit/lib/junit-rt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/javafx-doclet.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/tools.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/htmlconverter.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Users/Schwinn/IdeaProjects/Learning_Java/out/production/Learning_Java:/Applications/IntelliJ IDEA 14.app/Contents/lib/junit-4.11.jar:/Applications/IntelliJ IDEA 14.app/Contents/lib/hamcrest-core-1.3.jar:/Applications/IntelliJ IDEA 14.app/Contents/lib/hamcrest-library-1.3.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 SCHHKsnow20180827.Monica,Pointer
null
出现异常的啦
必须要执行的代码

1️⃣.2  

public class Monica {
    @Test
    public void kobe() {
            FileInputStream in = null;
            try {
                in=new FileInputStream("myfile.txt");
                int b;
                b = in.read();
                while (b != -1) {
                    System.out.print((char) b);
                    b = in.read();
                }
            }
            catch(FileNotFoundException e){
                e.getStackTrace();
            }
            catch(IOException e){
                e.getStackTrace();
            }
            finally {
                try {
                    in.close();
                }
                catch (IOException e){
                    e.getStackTrace();
                }
                catch (NullPointerException e){
                    e.getStackTrace();
                }
            }
        }
    }
/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java -ea -Didea.launcher.port=7536 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 14.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Applications/IntelliJ IDEA 14.app/Contents/lib/idea_rt.jar:/Applications/IntelliJ IDEA 14.app/Contents/plugins/junit/lib/junit-rt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/javafx-doclet.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/lib/tools.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/htmlconverter.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Users/Schwinn/IdeaProjects/Learning_Java/out/production/Learning_Java:/Applications/IntelliJ IDEA 14.app/Contents/lib/junit-4.11.jar:/Applications/IntelliJ IDEA 14.app/Contents/lib/hamcrest-core-1.3.jar:/Applications/IntelliJ IDEA 14.app/Contents/lib/hamcrest-library-1.3.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 SCHHKsnow20180827.Monica,kobe

Format:

try{

  ......  //可能发生异常的代码

}

catch( Exception1 e ){

  ......  //处理Exception1异常

}

catch( Exception2 e ){

......   //处理Exception2异常

finally{

......  //一定要执行的语句,但是可以没有finally语句

  }  

2️⃣throws (上传问题给其调用者)

public class Monica {
    public static void main(String[] args) throws FileNotFoundException,IOException {
        leBron();
    }
    public static void leBron() throws FileNotFoundException,IOException{
        kobe();
    }
    public static void kobe() throws FileNotFoundException,IOException{
            FileInputStream in = null;
                in=new FileInputStream("myfile.txt");
                int b;
                b = in.read();
                while (b != -1) {
                    System.out.print((char) b);
                    b = in.read();
                }
            }
    }

Format:

            public void Kobe() throws Exception...{

                                                                     ....

                                                                     }

3️⃣throw  (手动抛出一个异常)

public class Monica {
    public static void main(String[] args) throws Exception{
        Kobe kb23=new Kobe(23);
        Kobe kb24=new Kobe(24);
        System.out.println(kb23.compareScore(kb24));
        System.out.println(kb23.compareScore(new String("Kobe")));

    }
}
class Kobe{
    private int score;
    public Kobe(int score){
        this.score=score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public int getScore() {
        return score;
    }
    public String compareScore(Object o) throws Exception{
        if(o==this){
            return "=";
        }
        else if(o instanceof Kobe){
            Kobe kobe=(Kobe)o;
            if(kobe.getScore()==this.getScore()){
                return "=";
            }
            else if(kobe.getScore()<this.getScore()){
                return "小";
            }
            else{
                return "大";
            }
        }
        else {
            throw new Exception("传入科比的啦");
        }
    }
}
大
Exception in thread "main" java.lang.Exception: 传入科比的啦
	

4️⃣自创运行时异常类

public class SongException extends RuntimeException {
    static final long serialVersionUID= 9089243478974444436L;
    public SongException(){

    }
    public SongException(String msg){
        super(msg);
    }
}
public class Monica {
    public static void main(String[] args) throws Exception{
        Kobe kb23=new Kobe(23);
        Kobe kb24=new Kobe(24);
        System.out.println(kb23.compareScore(kb24));
        System.out.println(kb24.compareScore(kb23));
        System.out.println(kb23.compareScore(new String("Kobe")));

    }
}
class Kobe{
    private int score;
    public Kobe(int score){
        this.score=score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public int getScore() {
        return score;
    }
    public String compareScore(Object o) throws Exception{
        if(o==this){
            return "=";
        }
        else if(o instanceof Kobe){
            Kobe kobe=(Kobe)o;
            if(kobe.getScore()==this.getScore()){
                return "=";
            }
            else if(kobe.getScore()<this.getScore()){
                return "小";
            }
            else{
                return "大";
            }
        }
        else {
            throw new SongException("这是宋小艾异常类啊");
        }
    }
}
大
小
Exception in thread "main" SCHHKsnow20180827.SongException: 这是宋小艾异常类啊

猜你喜欢

转载自blog.csdn.net/Iverson941112/article/details/82143981
今日推荐