笔记:

/** 异常处理机制: 抓抛模型
* 1."抛", 一旦抛出,程序终止! printStackTrace()显示异常路径!
* 2."抓", 抓住异常
* try{
* //try语句声明的变量是局部的,
* //可能出现异常的代码
* }catch(Exception e1){
* //处理的方式1, 或者显示提示信息
* }catch(Exception e2){
* //处理的方式2, 或者显示提示信息
* }finally{
* //可选,可不选
* //无论如何,这个代码是一定会执行的
* }
* 3.异常处理后,后面的代码可以继续执行!
* 4.在方法的声明出, 显式地抛出异常对象的类型
* -----------------------------------------
* 自定义异常处理
* 1.方法名() throws Class ExceptionList extends Exception
* 2.
* */

[笔记2]异常处理的5个关键字:

/**异常处理的5个关键字:
* 捕获异常: try/catch/finally
* 抛出异常: throw 可以手动抛出异常对象;例如: throw new Exception("您输入的数值存在负数!");
* 声明异常: throws 声明方法 可能要抛出的各种异常类,向上 传递异常,直到Main()函数!!:
* returnType methodName(....) throws ExceptionList{
* throw new ExceptionList("......");
* }
* class ExceptionList extends Exception{ //自定义的异常类
* }

代码1:

public class TestExcption{
public static void main(String[] args) throws IOException {
TestExcption.method1();
}
static void method1() throws IOException ,FileNotFoundException{
FileInputStream fis =new FileInputStream(new File("hello.txt"));
int ch;
while((ch =fis.read())!=-1 ){
System.out.print((char)ch);
}
fis.close();
}
}

运行1:

Exception in thread "main" java.io.FileNotFoundException: hello.txt (ϵͳÕҲ»µ½ָ¶)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
at 任务138_处理异常.TestExcption.method1(TestExcption.java:35)
at 任务138_处理异常.TestExcption.main(TestExcption.java:32)

代码2:

import java.util.Scanner;

public class EcmDef {
public static void main(String[] args) {
try{
Scanner cin=new Scanner(System.in);
int i,j;
i=cin.nextInt();
j=cin.nextInt();
EcmDef.ecm(i,j);
}catch (NumberFormatException e){
System.out.println("异常:输入数据类型不一致!");
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("异常:缺少命令行参数");
}catch (ArithmeticException e){
System.out.println("异常:分母为0了");
}catch (EcDef e){
System.out.println(e.getMessage());
}
}
public static void ecm(int i,int j) throws EcDef{ //综合应用throw()和throws()!
if(i<0||j<0)
throw new EcDef("您输入的数值存在负数!");
else
System.out.println(i/j);
}
}
class EcDef extends Exception{ //自定义一个异常类, 两个构造器直接 生成即可!
public EcDef() {
}
public EcDef(String message) {
super(message);
}
}

运行2:

1 -2
您输入的数值存在负数! 1 0
异常:分母为0了

Java基础-异常处理机制 及异常处理的五个关键字:try/catch/finally/throw /throws的更多相关文章

  1. Java 基础入门随笔(2) JavaSE版——关键字、进制转换、类型转换

    1.Java语言-关键字 关键字:被java语言赋予了特殊含义的词,特点是所有的字母都为小写. java涉及到的关键字整理: 用于定义数据类型的关键字 class interface byte sho ...

  2. JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

    JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...

  3. Java基础-类加载机制与自定义类Java类加载器(ClassLoader)

    Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...

  4. Java异常控制机制和异常处理原则【转】

    原文:https://www.jianshu.com/p/15872cba211d Java异常控制机制又被称为“违例控制机制”. 捕获程序错误最理想的时机是在编译阶段,这样可以彻底避免错误的代码运行 ...

  5. Java基础(八)异常处理

    一.异常 异常是指程序在运行过程产生的不正常情况.语法错误不算异常. 1.异常体系 Throwable:Java语言中所有错误或异常的超类:Throwable 类的子类有两个:1.Error:2.Ex ...

  6. php5和php7的异常处理机制 ----thinkphp5 异常处理的分析

    1.php异常和错误 在其他语言中,异常和错误是有区别的,但是PHP,遇见自身错误时,会触发一个错误,而不是跑出异常.并且,php大部分情况,都会触发错误,终止程序执行,在php5中,try catc ...

  7. JAVA基础-反射机制

    什么是JAVA的反射机制 Java反射是Java被视为动态(或准动态)语言的一个关键性质.这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其 ...

  8. 夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理

    目录 final使用 final变量 final修饰基本数据类型变量和引用 final类 final关键字的知识点 final关键字的最佳实践 final的用法 关于空白final final内存分配 ...

  9. java:异常机制(try,catch,finally,throw,throws,自定义异常)

    * String类中的格式化字符串的方法: * public static String format(String format, Object... args):使用指定的格式字符串和参数返回一个 ...

随机推荐

  1. 希望对自学的javascript新手有帮助

  2. tomcat修改server.xml的虚拟目录,启动eclipse后清空

    修改eclipse中servers的server.xml 参考文章:https://blog.csdn.net/binglong_world/article/details/77604324

  3. 总结几个最近处理问题中使用http协议的代码

    demo1:几个不同的http请求方式总结: ----------------------------------------------------------------------------- ...

  4. (4.36)sql server中的waitfor

    关键词:waitfor SQL有定时执行的语句 WaitFor,可以写到一个存储过程中再执行一次 语法:WaitFor{Delay 'time'|Time 'time} Delay后面的时间为延迟多少 ...

  5. [转帖]HTTP请求方法:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE 说明

    HTTP请求方法:GET.HEAD.POST.PUT.DELETE.CONNECT.OPTIONS.TRACE 说明 平时的Rest开发,用到的都是GET,POST,PUT,DELETE类型的请求. ...

  6. Oracle(11g)详细安装步骤

     最详细的Oracle安装步骤就在这里,话不多说直接给大家上安装Oracle的详细教程  如果没有安装包,可以先点击下载下载地址:http://download.oracle.com/otn/nt/o ...

  7. Redis主从及Cluster区别及注意事项

    https://yq.aliyun.com/articles/647342 https://blog.csdn.net/biren_wang/article/details/78117392 http ...

  8. go 常量2

    数值常量 数值常量是高精度的 _值_. 一个未指定类型的常量由上下文来决定其类型. 也尝试一下输出 needInt(Big) 吧. package main import "fmt" ...

  9. element-ui获取用户选中项

    <el-table :data="tableData" stripe border style="width: 100%" @selection-chan ...

  10. Skip List(跳跃表)原理详解与实现

    ref : https://dsqiu.iteye.com/blog/1705530   本文内容框架: §1 Skip List 介绍 §2 Skip List 定义以及构造步骤   §3 Skip ...