Java基础(basis)-----异常与错误处理

Posted fengfuwanliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础(basis)-----异常与错误处理相关的知识,希望对你有一定的参考价值。

   1.编译型异常和运行时异常 

      编译时异常是指程序正确 而由外界条件不满足而产生的异常 java 中要求必须去捕捉住这类异常 不然无法通过编译

      运行时异常是指程序存在着bug 如空指针异常 数组下标越界 都属于 运行时异常

   2.Error和Exception

      Exception:是程序本身可以处理的异常

      Error:是程序无法处理的错误,这些错误标识故障发生于虚拟机自身或者发生在虚拟机试图执行应用时,一般不需要程序处理,例如:内存空间不足,栈溢出

技术图片

   3.throws  在方法的声明处,显式的抛出该异常对象的类型 

package com.exception;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * throws 在方法的声明处,显式的抛出该异常对象的类型 
 * 不推荐
 * @author yyx 2019年8月18日
 */
public class ExceptionThrows 

    public static void main(String[] args) throws FileNotFoundException, IOException 
        String filepath = "D:" + File.separator + "exception.txt";
        FileOutputStream fos = new FileOutputStream(filepath);
        String content = "今天是2018/4/8,天气很好";
        byte[] array = content.getBytes();
        fos.write(array);
        fos.close();
    

   4.throw  在方法内抛出异常对象

     自定义异常对象只有抛出后才能被catch

package com.exception;

/**
 * throw 在方法内抛出异常对象 不推荐
 * 
 * @author yyx 2019年8月18日
 */
public class ExceptionThrow 
    public static void main(String[] args) 
        try 
            int i = 3;
            if (i > 4) 
                System.out.println("恭喜你,答对了!");
             else 
                throw new MyException("对不起,算数错误");
            
         catch (Exception e) 
            System.out.println(e.getMessage());
        
    


class MyException extends Exception 
    private static final long serialVersionUID = 1L;

    public MyException(String msg) 
        super(msg);
    

   5.try.....catch....finally......

     finally里面的代码无论是否出现异常都会执行

package com.exception;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
 * 推荐
 * @author yyx 
 * 2019年8月18日
 */
public class ExceptionTryCatch 
    public static void main(String[] args) 
        String filepath = "D:" + File.separator + "exception.txt";
        FileOutputStream fos = null;
        try 
            fos = new FileOutputStream(filepath);
            String content = "今天是2018/4/8,天气很好";
            byte[] array = content.getBytes();
            fos.write(array);
         catch (IOException e) 
            e.printStackTrace();// 一般此处写入日志
         finally 
            if (fos != null) 
                try 
                    fos.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
        
        
        ReturnExceptionDemo reDemo=new ReturnExceptionDemo();
        try 
            reDemo.methodA();
         catch (Exception e) 
            System.out.println(e.getMessage());
        
        int i = reDemo.methodB();
        System.out.println(i);
    


class ReturnExceptionDemo 
    void methodA() 
        try 
            System.out.println("进入方法A");
            throw new RuntimeException("制造异常");
         finally 
            System.out.println("用A方法的finally");
        
    

    int methodB() 
        try 
            System.out.println("进入方法B");
            return 1;
         finally 
            System.out.println("调用B方法的finally");
            return 2;
        
    

   6.throws和throw的区别

  • 位置不同:throws用在函数上,后面跟的是异常类,可以跟多个;而throw用在函数内,后面跟的是异常对象 
  • 功能不同:throws用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方式;throw抛出具体的问题对象
  •  throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象
  • 两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理

以上是关于Java基础(basis)-----异常与错误处理的主要内容,如果未能解决你的问题,请参考以下文章

Java基础(basis)-----==和equals()的区别

Java笔记:异常处理

[编织消息框架][JAVA核心技术]异常基础

Java基础之异常处理

Java异常处理的基础知识

java基础 --- Java异常处理