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年2月21日
 */
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  在方法内抛出异常对象

package com.exception;

/**
 * throw 在方法内抛出异常对象 不推荐
 *
 * @author yyx 2019年2月21日
 */
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......

package com.exception;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
 * 推荐
 * @author yyx
 * 2019年2月21日
 */
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)-----异常与错误处理的更多相关文章

  1. java基础之异常 · fossi

    在开发中,异常处理是一个不可绕开的话题,我们对于异常的处理已经非常熟练了,对于异常本身的概念.用法等不再赘述了,直接结合面试问题来加深对异常的理解吧. Throwable 可以用来表示任何可以作为异常 ...

  2. 【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!

    目录 1.异常 1.1 异常概念 1.2 异常体系 1.3 异常分类 1.4 异常的产生过程解析 2. 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常thro ...

  3. JAVA基础知识|异常

    一.基础知识 处理异常,java提供了一个优秀的解决方案:异常处理机制. java把异常当作对象来处理,所有的异常都是由Throwable继承而来,但在下一层立即分解为两个分支:Error和Excep ...

  4. 【java基础之异常】死了都要try

    目录 1.异常 1.1 异常概念 1.2 异常体系 1.3 异常分类 1.4 异常的产生过程解析 2. 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常thro ...

  5. java基础之 异常

    Throwable是所有Java程序中错误处理的父类,有两种资类:Error和Exception. Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继 ...

  6. Java基础笔记-异常

    Java中的异常机制: Throwable类是 Java 语言中所有错误或异常的超类.主要包括两个子类: Error和Exception. 一般中要处理的异常是Exception. Java中最常见的 ...

  7. java的常见异常与错误总结

    算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeAr ...

  8. Java基础之异常

    1.异常的概念 异常:程序在运行时出现的不正常情况,也可以说是出现的问题: Java中的异常:出现的不正常的问题也是一类事物,这类事物有一些共性的东西,比如有名称,有产生的原因等,将这些共性的部分抽取 ...

  9. 黑马程序员----java基础:异常

    dff ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 经常写程序的人对try...catch...finally语句肯定是不陌生的了.但是好多 ...

随机推荐

  1. 《Redis 主从复制》

    万念俱灰,说的就是我现在的心情...... 周六下午写了一下午的读书笔记,由于我的 MAC 有点问题,重启了一下...... 灰飞烟灭...... 读 第八章<集群> 总结 1:如何开启主 ...

  2. python摸爬滚打之day03----基本数据类型(int,str,bool)

    1.数据类型转换 字符串 ----> bool print( bool("hello") )  -----> True 数字----> bool print( b ...

  3. 【Python全栈-后端开发】Django入门基础

    Django基础知识 一. 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的 ...

  4. sql-server数据库常用语句

    查看所有数据库名 select name from master..Sysdatabases order by name; 查看当前数据所有表 select name from sysobjects ...

  5. C# Asp.net中xml串与对象互相转换

    public class XmlUtil { #region 反序列化 /// <summary> /// 将XML字符串反序列化为对象 /// </summary> /// ...

  6. python3安装PIL提示Could not find a version that satisfies the requirement pil

    python3安装PIL提示如下错误,安装指令是pip3 install PIL,这个是因为PIL(Python Imaging Library)是Python中一个强大的图像处理库,但目前其只支持到 ...

  7. what's the python之异常处理

    what's the 异常 python程序中会出现异常,即bug.若出现异常程序就报错,异常之后的代码就不会继续往下执行,这是一个正常程序不允许出现的,但是在某些程序交互的时候难免会因为用户输入问题 ...

  8. Java 基础 变量和运算符

    Java基础语法   第1章 变量 1.1 变量概述 1.2 计算机存储单元 1.3 基本类型之4类8种 1.4 常量与类型 1.5 定义变量(创建变量) 1.6 变量使用的注意事项 1.7 数据类型 ...

  9. [Java in NetBeans] Lesson 11. While Loops

    这个课程的参考视频和图片来自youtube. 主要学到的知识点有:(the same use in C/C++) 1. while loop while(i < max){} will keep ...

  10. Entity Framework学习初级篇1--EF基本概况《转》

    最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不是很完善,半成品.不过,据说在.Net4.0中,微软将推荐使用此框架,并会有所改善.而且,现在基本上所有数据库均提供了对EF的支 ...