Java异常处理及异常机制介绍
一,什么是异常
当出现程序无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏,网络不可用...)时,JAVA就会用异常对象来描述。
JAVA中用2种方法处理异常:
1.在发生异常的地方直接处理;
2.将异常抛给调用者,让调用者处理。
JAVA异常可分为3种:
(1)检查性异常:java.lang.Exception.检查性异常------程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。JAVA编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。
(2)运行期异常:java.lang.RuntimeException.运行期异常------这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,JAVA编译器强制要求处理这类异常。
(3)错误:java.lang.Error.错误------一般很少见,也很难通过程序解决。它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而由运行环境处理。
顶层是java.lang.Throwable类,检查性异常,运行期异常,错误都是这个类的子孙类。java.lang.Exception和java.lang.Error继承自java.lang.Throwable,而java.lang.RuntimeException继承自java.lang.Exception
二,如何处理异常?
1.try...catch 。程序运行产生异常时,将从异常发生点中断程序并向外抛出异常信息。
int x = (int)(Math.random()*5);
int y = (int)(Math.random()*10);
int[] z =new int[5];
try
{
System.out.println("y/x="+(y/x));
System.out.println("y="+y+"z[y]="+z[y]);
}
catch (ArithmeticException exc1)
{
System.out.println("算术运算异常:"+exc1.getMessage());
}
catch (ArrayIndexOutOfBoundsException exc2)
{
System.out.println("数据越界异常:"+exc2.getMessage());
}
说明:ArithmeticException和ArrayIndexOutOfBoundsException都属运行期异常:java.lang.RuntimeException,如果不用try...catch捕获,程序也是可通过编译的,但如果属于检查性异常:java.lang.Exception,必须而且一定要用try...catch...对其进行处理。
2.finally。如果把finally块置tr
相关文档:
package com.sunz.fileUpload;
public class RarToFile {
//cmd 压缩与解压缩命令
private static String rarCmd = "C:\\Program Files\\WinRAR\\Rar.exe a ";
private static String unrarCmd = "C:\\Program Files\\W ......
传智播客java培训2010年4月10日ajax增强总结1
今天的课,我只能用惊讶来实现,因为虽然以前我自己做开发的时候也会经常用到javascript来做一些东西,并且也能实现所要需要的功能做,我没有想到的是,其中用到的一些功能居然可以用很简单的语言就能实现,不愧是多年总结下来的经验!我在想如果我仍旧在原先的岗位上继续做 ......
之前写过一个实现了某种功能的java程序,但由于近日“工作”需要,又需要在c/c++中重新使用该功能。为了节省时间,我采取了在c/c++中调用java程序的方法,但之前没有接触过类似的东西,到网上一查,果然有类似的东西,心中暗喜ing...。查到的资料中有几个不错的网页:
&nbs ......
1.大尾(big_endian)小尾(little_endian)的问题
基于Web的测试软件是由C++数据采集服务器程序和客户端Java显示程序两部分构成,前者用C++,后者Java语言,存在数据移植问题。因为
在计算机系统中,当包含数字的二进制文件从一个结构移到另一结构时,就出现大尾小尾问题。不同CPU在多字节数(如四字节int)存储时有两种方法 ......
字符集与编码方法
字符集
字符编码
对应语言
ASCII
ASCII
英语
ISO8859-1
ISO8859-1
拉丁字母
GB2312
GB2312
简体中文
GBK
GBK
中文
GB18030
GB18030
简体中文
Big5
Big5
繁体中文
Unicode
UTF-8
多国语言
&nbs ......