java异常的一些小知识
异常,我们软件都需要面对的一个问题。如何让你的软件更加健壮呢?这是一个值得我们考虑的问题。这里主要为大家介绍一下异常是什么,异常是如何产生的,如何将异常抛出,如何捕获异常,对于异常应该如何处理的个人一些见解。
异常是什么
异常是如何产生的
//生成异常的方法
void m(int i ) throws ArithmeticException
{
if (i==0)
{
//生成异常的代码
throw new ArithmeticException ("被除数为零");
}
}
这里的这个方法,当你调用的时候,如果将i传入0 ,那么,就会生成一个异常,并且返回给调用它的类。
异常如何抛出
//抛异常的类,这里的主函数调用f类,然后通过f类调用m类,这时,m类将异常抛给f类,然后f类将异常接着抛给了主函数。
void f(int i) throws ArithmeticException
{
//调用m类
m(i);
}
//生成异常的方法
void m(int i ) throws ArithmeticException
{
if (i==0)
{
//生成异常的代码
throw new ArithmeticException ("被除数为零");
}
}
在这里,我们的f类调用了可以生成异常的m类,但是它并没有将m类抛给它的异常解决,而是通过
throws ArithmeticExeption 这个方法,将异常再次抛出,抛给了调用它的类。
如果调用它的类还是不想或者是不能解决该异常,可以继续用同样的方法将异常抛出。
如何捕获异常
异常如何被捕获呢?先向大家展示一段代码:
public class TestEx
{
public static void main (String[] args)
{
int[] arr = {1,2,3};
System.out.println(arr[2]);
//异常的处理机制
try
{
//有可能出问题的代码
System.out.println(2/0) ;
}
//捕捉异常
catch (ArithmeticException ae)
{
//返回信息,如果出异常后会执行这块的内容
System.out.println("系统出异常了,请联系管理员");
ae.printStackTrace();
}
}
}
public class TestEx
{
public static void main (String[] args)
{
try
{
new TestEx().f(0);
}
catch (ArithmeticException ae)
{
ae.printStackTrace();
System.out.println("这是一个抛出了的异常!");
}
}
异常处理
我们可以用多个catch语句去捕捉异常,对于不同的异常提供不同的解决方案,但是需要注意的是:如果异常类有继承关系的话,要将父类型的catch块放到子类型的catch块之后,这样才能保证后续的catch块可能被执行,否则子类型的catch块将永远无法到达,Java编译器会报错。
如果我们的程序只要出异常就需要进行某一操作:比如将异常记录。那么我们就可能会用到 finally语句块,它的写法类似于catch,不同之处在于它的括号中的内容肯定会执行。
java异常的一些小知识的更多相关文章
- Java异常的一个小知识
有以下两个代码: package com.lk.A; public class Test3 { public static void main(String[] args) { try { int a ...
- 学习笔记:Java的一些基础小知识之JVM与GC
一.JVM是什么 Java虚拟机(英语:Java Virtual Machine,缩写为JVM),又名爪哇虚拟器,一种能够运行Java bytecode的虚拟机,以堆栈结构机器来进行实做.最早由太 ...
- Java的一些基础小知识之JVM与GC (转)
一.JVM是什么 Java虚拟机(英语:Java Virtual Machine,缩写为JVM),又名爪哇虚拟器,一种能够运行Java bytecode的虚拟机,以堆栈结构机器来进行实做.最早由太阳微 ...
- 【java】:通用小知识
1.将String字符串放在最前面 为了防止偶发性的NullPointerException 异常,我们通常将String放置在equals()函数的左边来实现字符串比较,如下代码: // Bad i ...
- java中方法传值小知识解析
1.java语言参数之间只有值传递,包括按值调用和按引用调用. 一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值. 按值调用:包括八大基本数据类型都是按值调用.传值的时候,也 ...
- 关于JAVA的一些零碎小知识
1.经常遇到集合之间需要互相转化的 Array和List转化:Arrays.asList(数组):list.toArray(); List和Set转化:Set<String> set = ...
- java异常查看利器之使用 jvmti 的Callback_JVMTI_EVENT_EXCEPTION 事件查看异常
阅读本文前需要了解什么是jvmti,jvmti全称称之为 JVM Tool Interface,有关jvmti更详细的知识,本文不再详细列出.大家可以借助百度来了解有关它更为详尽的内容. 在开源文件大 ...
- JAVA学习笔记—review基本知识[反射与异常]
JAVA学习笔记—review基本知识[反射与异常] 1.异常: 1.1异常的分类: Java会将所有的异常封装成对象,其根本父类为Throwable. Throwable有两个子类:Error 和E ...
- Java基础小知识(一)
序言:“不积跬步,无以至千里.不积小流,无以成江海.”每一个庞大的知识架构都是由无数个小知识点慢慢积累起来的,没有量变的积累,就没有质变上的飞跃,成功往往离不开积累. 今天就和大家分享一些我在学习J ...
随机推荐
- input有许多,点击按钮使用form传递文本框的值
input有许多,点击按钮使用form传递文本框的值 <form name="form1" method="post" action="< ...
- S3C2440 TFTLCD驱动详解
S3C2440自带有LCD控制器,该控制器主要有以下接口 仅仅说TFT显示器,TFT显示器的时序如下 TFT显示器的驱动是以行列的形式逐点扫描过来的,驱动时钟有三种,一种是行时钟,一种是列时钟,还有一 ...
- 利用STM32F唯一96bit序列号实现反拷贝加密的源代码公开(转)
源:利用STM32F唯一96bit序列号实现反拷贝加密的源代码公开 //---------------------------------------------------------------- ...
- EasyUI datagrid 的checkbox设置
参考url: http://blog.csdn.net/baronyang/article/details/9323463 我的需求: 抓取数据生成的日志,日志中有部分是抓取失败的,需要将失败的发送到 ...
- 转自他人——————TLE之前,没有一个节点叫失败!!!
我想我十八年来记忆最深刻的夜晚,大概便是在吉林大学燥热的宿舍里,穿着橘黄色的短袖,努力咽下大口大口的雪碧.那天晚上我仰躺在吉大热得几乎不能入眠的床板上,一动不动,看夏夜里打不尽的蚊子在惨白的天花板下飞 ...
- Xcode 之 snippet 代码重用
1. 选中代码 2. 拖入xcode 右下侧的 snippet 区域 3. 修改名称 4. 修改快捷输入 (shortcut) 5. <#content#> ,可选修改项
- [Angular Tutorial] 0-Bootstraping
在这一节的tutorial中,您将会逐渐熟悉AngularJS phonecat app的最重要的源代码文件.您也将学到如何将开发服务器与angular-seed绑定到一起,并且在浏览器中运行应用. ...
- java中常用的空判断
Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s));方法二: 比较字 ...
- MyEclipse 修改项目字符集
项目->右键+properties->Resource->Text file container->others->utf-8
- Intel为什么做不好手机CPU?
Intel大名鼎鼎,在CPU界无人不知无人不晓,然而在当前主流的手机CPU市场上却是远远落后日本的ARM公司,这到底是Intel技术不足,还是ARM过于强大呢,今天我们就来探讨一下. 故事要从2006 ...