package 内部类异常包装器;

public class 异常 {

/**

* 1.异常:

* 有Error和Exception两个基本子类

* 2.Error:

* Error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

* 3.Exception:

* 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。比如,如果数组索引扩展不超出数组界限,那么,ArrayIndexOutOfBoundsException异常从不会抛出。

*

* 4.本类中对除以0产生错误的异常进行捕捉,抛出异常、finally多执行释放资源,回收垃圾

* 5.处理异常:

* 第一,通过将Try{}catch(){}块纳入其代码中,在这里捕获给被命名为属于某个超类的异常,并调用方法处理它。即使catch块是空的,这也算是处理情况。

第二,让被调用的方法表示它将不处理异常,而且该异常将被抛回到它所遇到的调用方法中。它是按如下所示通过用throws子句标记的该调用方法的声明来实现的:

public void troublesome() throws IOException

6.异常:

(1).非受检异常:是指编译不要求强制处理的异常。一般是编程时的逻辑错误。是程序员应该积极避免出现的异常

错误的类型转换异常:java.lang.ClassCastException

数组下标越界异常:java.lang.ArrayIndexOutOfBoundsException

空指针异常:java.lang.NullPointerException

除0溢出异常:java.lang.ArithmeticException

数据格式异常 NumberFormatException

(2).受检异常:是指编译器要求必须处理的异常,即程序在运行时由于外界因素造成的一般性异常

没有找到指定名称的类异常:java.lang.ClassNotFoundException

访问不存在的文件异常:java.io.FileNotFoundException

操作文件时发生的异常:java.io.IOException

操作数据库时发生的异常:java.sql.SQLException

7.抛出异常:

(1).throw语句用来明确抛出一个异常,用户必须得到一个Throwable类或其它子类产生的实例句柄,通过参数传到catch子句,或者用new创建一个实例

注意:执行throw语句后,运行流程将立即停止,throw的下一条语句也将暂停执行。throw后面必须抛出一个Throwable的实例

(2).throws:\一个方法有异常,但它本身并不对异常进行处理。将其向外抛出异常 详见:本包中的 异常2.java类

*/

public static void main(String[] args) {

System.out.println("请打开数据库连接");

System.out.println("数据库操作");

try {

int i = 12 / 0;//异常代码,0不能作为整除数

System.out.println("执行数据库操作");

} catch (Exception e) {

/**System.out.println("除0出错!");

以下是异常信息的获取

// System.out.println(e.getMessage());//返回异常对象的详细信息

e.printStackTrace();//获取异常的具体类型

*/

throw new ArithmeticException("除0出错");//7.throw抛异常

}finally{

System.out.println("关闭数据库连接....");//总要执行的语句

}

}

}

package 内部类异常包装器;

/**

*

* 这里定义了一个异常,数组下标越界,但通过改变了i的值,使程序又运行,通过finally中的(i+1)次

*

*/

public class 异常2 {

public static void main(String[] args)throws Exception {//throws抛出异常

int i = 0;

String[] str = {"Hello Word", "No I mean it!", "HELLO WORD"};

while(i < 4){//小于4代表数组下标越界

try{

System.out.println(str[i]);

}catch (ArrayStoreException e) {

// TODO: handle exception

i = -1;

}finally{

System.out.println("必运行的代码"+(i+1)+"次");

}

i++;

}

}

}

java exception用法_Java基础回顾_Exception异常使用详解相关推荐

  1. java serializable用法_JAVA序列化Serializable及Externalizable区别详解

    序列化简介 Java 的对象序列化将那些实现 Serializable 接口的对象转换成一个字节序列,并能在之后将这个字节序列完全恢复为原来的对象. 这就意味着 Java 对象在网络上的传输可以不依赖 ...

  2. java file用法_Java File 类的使用方法详解(转)

    转自:http://www.codeceo.com/article/java-file-class.html Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对J ...

  3. java 字节码详解_Java基础篇(JVM)——字节码详解

    这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...

  4. Java指令全集_Java的JVM字节码指令集详解

    本文详细介绍了如何使用javap查看java方法中的字节码.以及各种字节码的含义,并且配以完善的案例,一步步,从头到尾带领大家翻译javap的输出.在文末还附有JVM字节码指令集表. 本文不适合没有J ...

  5. java 静态 编译_Java中的动态和静态编译实例详解

    Java中的动态和静态编译实例详解 首先,我们来说说动态和静态编译的问题. Q: java和javascript有什么区别? 总结了一下:有以下几点吧: 1.首先从运行环境来说java代码是在JVM上 ...

  6. java mod %区别_Java中 % 与Math.floorMod() 区别详解

    %为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...

  7. java switch 值_Java switch多值匹配操作详解

    这篇文章主要介绍了Java switch多值匹配操作详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们都知道 switch 用来走流程分支,大 ...

  8. java 分割数据_java 分割csv数据的实例详解

    java 分割csv数据的实例详解 实际需要解析的csv中很多都是从excel中转过来的,数据中本身包含了逗号的数据导致split的过程中发现数据对不上,因此,基于这种特性,重新写了一个csv数据的分 ...

  9. java 接口函数_Java函数式接口Supplier接口实例详解

    这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JDK提供了大量常用的函数式接口以丰 ...

最新文章

  1. # cat /proc/umap/vi
  2. struct 模块 把一个类型,如数字,转成固定长度的bytes
  3. Leetcode 107. 二叉树的层次遍历 II 解题思路及C++实现
  4. python3 : remove,pop和del方法的区别
  5. 投屏画面尺寸拉伸怎么办_手机投屏转换器设置方法图文教程
  6. PLSQL_Database Link的基本概念和用法(概念)
  7. keycloak集群化的思考
  8. git撤销commit 并保存之前的修改
  9. (vue基础试炼_08)Vue模板语法
  10. Java多线程系列--“JUC锁”03之 公平锁(一)
  11. 【转】热门3D游戏视觉效果名词简介
  12. 全局变量和静态变量的区别
  13. r语言导出文件为xlxs_【软件】R语言数据导入与导出
  14. UE4读取steam sessionsetting中Value是亚洲文字时 乱码/ UE4 fix asian character garbled when get sessionsetting
  15. spotbug常见错误心得
  16. MySQL日志与备份
  17. 草图vr3.6许可证服务器安装失败,VRay3.6无法获得许可-200
  18. 微信小程序——添加广告
  19. Java开源模板引擎
  20. 贪心算法经典例题3:导弹发射问题

热门文章

  1. vue移动端通过px动态计算图片宽高_vue图片宽高自适应_移动web图片高度自适应的解决方案...
  2. .deploy 文件 php,关于php:Heroku deploy自动删除服务器文件?
  3. 7价 半导体掺杂_掺杂工艺(一)
  4. 2万字带你攻略掉Selenium
  5. SkyEye建模之方法介绍篇
  6. python筛选数据求均值_Python Pandas实现数据分组求平均值并填充nan的示例
  7. 使用Xftp5连接云服务器
  8. python 将图片与字符串相互转换
  9. 【测试】接口测试介绍
  10. Nginx的平滑升级记录---适用于编译安装的Nginx