java基础——java中的异常
来源:互联网 发布:数字网络配线架 编辑:程序博客网 时间:2024/06/06 04:56
第一讲异常
一、概念
java运行期间发生的问题就是异常
java运行时发生的除了exception还有error
异常:通常发生后可以有针对性的处理方式
错误:通常发生后不会有针对性的处理方式
error的发生通常都是系统级别的问题,都是JVM所在系统发生的并反馈给JVM的,无法针对处理,只能修改代码
异常的应用:
在编写程序时,必须要考虑程序的问题情况
举例:卖水果功能需要传递钱参数,有可能有假币
所以,定义程序需要考虑程序的健壮性,加入一些逻辑判断
例一:
class Demo
{
/*
对给定的数组通过给定的角标获取元素。
*/
int getElement(int[] arr,int index)
{
/*
jvm出了问题,自己打包对象并抛出。
但是它所提供的信息不够给力。想要更清晰,需要自己写。
它的抛出不满足我们的要求。准备自己抛。
*/
if(arr==null)
{
throw new NullPointerException("arr指向的数组不存在");
}
if(index<0 || index>=arr.length)
{
//该条件如果满足,功能已经无法继续运算。这时 就必须结束功能,并将问题告知给调用者。这时就需要通过异常来解决。
//怎么用呢?
//1,创建一个异常对象。封装一些提示信息(自定义)。
//2,需要将这个对象告知给调用者。怎么告知呢?怎么将这个对象传递到调用者处呢?通过关键字throw就可以完成。 throw 异常对象;
//3,throw用在函数内,抛出异常对象,并可以结束函数。
throw new ArrayIndexOutOfBoundsException("错误的角标,"+index+"索引在数组中不存在");
}
int element = arr[index];
return element;
}
}
class ExceptionDemo3
{
public static void main(String[] args)
{
Demo d = new Demo();
int[] arr = {34,12,67};
int num = d.getElement(null,-1);
System.out.println("num="+num);
System.out.println("over");
}
}
throwable中的方法:
getmessage()
获取异常信息,返回字符串
to String()
获取异常类名和异常信息,返回字符串
print Stack Trace()
获取异常类名和异常信息,以及异常出现在程序中的位置
print Strack Trace()
通常用该方法将异常内容保存在日志文件中,以便查阅
throw和throws
throws用于标识函数暴露出来的异常
throw用于抛出异常对象
throws和throw的区别:
throws用在函数上,后面跟异常类名
throw用在函数内,后面跟异常对象
Exception和RuntimeException的区别
如果在函数内抛出Exception//编译失败,因为编译器在检查语法时发生了错误。
该程序已经出现问题,Java认为这个程序本身存在隐患,
需要捕获或者声明出来(你要么把问题处理,要么把问题标识出来让调用知道)
为什么抛出RuntimeException,不需要捕获,不要声明呢?
不是功能本身发生的异常,而是因为比如调用者传递参数错误而导致功能运行失败。
这时也是问题,需要通过异常来体现,但是这个异常不要声明出来的。
声明的目的是为了让调用者进行处理。
不声明的目的是不让调用者进行处理,就是为了让程序停止,让调用者看到现象,并进行代码的修正。★★★★★
原理异常分两种:
1,编译时异常:编译器会检测的异常。
2,运行时异常:编译器不会检测的异常。不需要声明。声明也可以,如果声明了,无外乎就是让调用者给出处理方式。
ArrayIndexOutOfBoundsException
IllegalArgumentException
NullPointerException
ClassCastException
声明和捕获。
声明:将问题标识出来,报告给调用者。
如果函数内通过throw抛出了编译时异常,而捕获,那么必须通过throws进行声明,让调用者去处理。
捕获:Java中对异常有针对性的语句进行捕获。
语句:
try
{
//需要被检测的语句。
}
catch(异常类 变量)//参数。
{
//异常的处理语句。
}
finally
{
//一定会被执行的语句。
}
例二:
class Demo
{
/*
如果定义功能时有问题发生需要报告给调用者。可以通过在函数上使用throws关键字进行声明。
*/
void show(int x)throws Exception
{
if(x>0)
throw new Exception();
else
System.out.println("show run");
}
}
class ExceptionDemo7
{
public static void main(String[] args)//throws Exception//在调用者上继续声明。
{
Demo d = new Demo();
try
{
d.show(1);//当调用了声明异常的方法时,必须有处理方式。要么捕获,要么声明。
}
catch (Exception ex)//括号中需要定义什么呢?对方抛出的是什么问题,在括号中就定义什么问题的引用。
{
System.out.println("异常发生了");
}
System.out.println("Hello World!");
}
- java基础——java中的异常
- Java基础———Java中的异常处理
- 黑马程序员——java基础---Java语言中的异常
- java基础——java异常基础
- Java基础——异常
- Java基础——异常
- Java基础——异常
- Java基础——异常
- Java基础—异常处理
- java基础学习—异常
- Java基础——Java异常
- 黑马程序员--Java基础--java中的异常
- 黑马程序员——java基础——异常(此乃java中的一个重点)
- Java基础笔记 – Java中的Exception异常 自定义异常
- Java基础笔记 – Java中的Exception异常 自定义异常
- Java基础日记———异常
- Java基础(八)——异常、包
- java基础——异常处理
- java选择排序
- TJOI2015Day1测试总结
- nginx源码学习——命令行选项处理
- OC和Swift混编(惊喜!)
- 登录、注册页面及后台代码
- java基础——java中的异常
- c++中BOOL和bool的区别
- Android实现网络多线程断点续传下载
- JavaScript Notes 1
- 算法导论 15章 动态规划
- php-fpm 启动参数及重要配置详解
- C++函数重载
- <NSCoding>存储数据 archivedDataWithRootObject unarchiveObjectWithData
- JDBC中语句超时与事务