Java中常见错误和异常解决方法

Java中常见错误和异常解决方法
Java中常见错误和异常解决方法

https://www.360docs.net/doc/c117483860.html,ng.NullPointerException

原因是:有空指针,有地址没赋值

2.Exception in thread "main" https://www.360docs.net/doc/c117483860.html,ng.ArithmeticException: / by zero

原因是除数是0

3.ArrayIndexOutOfBoundsException

原因是:数组越界

https://www.360docs.net/doc/c117483860.html,ng.NumberFormatException

原因是:数字格式化有问题

5、Unhandled exception type Exception

原因是:没有进行异常处理

6.进行国际化操作的时候遇到这样的错误:Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name Message, locale zh_CN

答:因为在命令提示符中,是没有错误的

解决方法是:在myeclipse中,会出现这个错误java国际化之Can't find bundle for base name

分类:JAVA2011-02-22 21:17231人阅读评论(0)收藏举报1.初步学习

最近在学习ResourseBundle时遇到了“Can't find bundle for base name ”这个错误搞了很

久才解决了。原因就是类路径问题要将属性文件放在类路径中!百度里很多都是教程但没有涉及到解决方法!2.中文显示:

测试文件

java 代码

package com.lht.ResourseBundleStudy;

import java.util.ResourceBundle;

public class ResourseBundleDemo {

public static void main(String[] args) {

ResourceBundle resource = ResourceBundle.getBundle("test");

System.out.print(resource.getString("msg0") + "!");

System.out.println(resource.getString("msg1") + "!"); }

}

test.properties

msg0="Hello World"

msg1="da jia hao"

开始自己测试的时候:将属性文件放在bin/下也试过也不行无赖中就在google中搜索了一下终于在sun的java论坛

(https://www.360docs.net/doc/c117483860.html,/thread.jspa?threadID=660477&messageID=4231534)中找到了线索下面是帖子的内容:

I've solved the problem the best way possible. Basically what i've done is added a new class folder named config to the project home dir. Then i added this classfolder to the classpath in project properties. After doing all of this you only need to reference the properties file by "Email".

Hope this helps anyone else who is having similiar problems.

基本意思就是在src下建立classes(名字无所谓)文件夹将属性文件存放在下面,然后将这个文件夹加入类路径中!运行就可以了:

加入类路径的方法:你的工程文件夹->properties->选择Libraries选项卡->Add Class Folder 将刚才建立的文件夹加入就可以了!

结果如下:

"Hello World"!"da jia hao";!

2.中文显示

在classes目录下建立message_CH.properties内容如下:

ms0="大家好"

同样用上面的测试文件!

结果如下:"?ó????"!

乱码怎么回事啊!

在百度里搜索后找到了答案有以为网友写的很清楚:https://www.360docs.net/doc/c117483860.html,/3885062.html 下面引用如下:

原理

Property文件中,使用的编码方式根据机器本身的设置可能是GBK或者UTF-8。而在Java 程序中读取Property文件的时候使用的是Unicode编码方式,这种编码方式不同会导致中文乱码。因此需要将Property文件中的中文字符转化成Unicode编码方式才能正常显示中文。

解决办法

Java提供了专门的工具对Property文件进行Unicode转化,这种工具就是native2ascii,它在JDK安装环境的bin目录下。

native2ascii 工具将带有本机编码字符(非拉丁1 和非单一码字符)的文件转换成带有Unicode编码字符的文件。

假设需要转化的属性文件为:D:/src/resources.properties(含有中文字符)

转化后的属性文件为:D:/classes/resources.properties(中文字符统一转化为Unicode)那么使用如下命令

JAVA_HOME/bin/native2ascii -encoding GBK D:/src/resources.properties

D:/classes/resources.properties

就能将含有中文字符的属性文件转化成单一Unicode编码方式的属性文件。中文乱码自然会被解决。

通过上面的方法我将生成的文件打开一看内容如下:

ch="/u5927/u5bb6/u597d"

再运行结果如下:

"大家好"

(2)另一种解决办法:Can't find bundle for base name 2010-09-10 15:23:14

标签:name find Can base bundle

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。https://www.360docs.net/doc/c117483860.html,/621580/389939

Struts2国际化异常处理

这是找不到指定文件;

你必须把 .properties 文件,放在与这个调用文件.java 相同的目录里;

Hello.java在workspace\test\src\com\lj\guojiehua下

hello_en_US.properties必须在workspace\test\src下

hello_zh_CN.properties必须在workspace\test\src下

其实原因是我虽然在build path 里面加了\pruway\source\source\config,但是系统编译的时候,在classes里面应该会自动产生resource_en_US.properties,可是实际情况是classes包下面没有产生,故我删掉重加,再编译结果发现通过了。。

就是说,只要你buildpath路径对了,该路径下也有resoucebudle需要的类,那么系统会自动在classes里面自动编译产生这些类的。所以,先检查classes里,有没有生成对应的resource_en_US.properties,如果没有,那么检查build path 路径下有没有对应的properties类,如果有,那么证明系统编译没有编译完整,删掉path,重新add foler,加入,再编译,检查classes

下有无。

如果都有,那么证明成功。

https://www.360docs.net/doc/c117483860.html,ng.IllegalThreadStateException

解决办法:不能启动两次线程

https://www.360docs.net/doc/c117483860.html,ng.NoSuchMethodError

答:必须有一个 public static void main(String[] args){ //这里是入口 } 作为入口点,启动java虚拟机时虚拟机会找这个方法,如果没有就报exception in thread “main”https://www.360docs.net/doc/c117483860.html,ng.nosuchmethoderror

12.

https://www.360docs.net/doc/c117483860.html,.UnknownHostException :https://www.360docs.net/doc/c117483860.html,/

原始出错程序是这样的:

解答方式:import https://www.360docs.net/doc/c117483860.html,.InetAddress ;

public class a{

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

InetAddress locAdd = null ;

InetAddress remAdd = null ;

locAdd = InetAddress.getLocalHost() ;// 得到本机

remAdd = InetAddress.getByName("https://www.360docs.net/doc/c117483860.html,/") ;

System.out.println("本机的IP地址:" + locAdd.getHostAddress()) ;

System.out.println("MLDNJAVA的IP地址:"+ remAdd.getHostAddress()) ;

System.out.println("本机是否可达:" + locAdd.isReachable(5000)) ;

}

//5000代表代数

};

运行后结果为:

如果注释掉remAdd = InetAddress.getByName("https://www.360docs.net/doc/c117483860.html,/") ;

运行结果又是这样的:

上述程序的解决办法是:将

remAdd = InetAddress.getByName("https://www.360docs.net/doc/c117483860.html,/") ;改成

程序运行结果如下:

完成实验要求,但是这里就有一个问题了,为什么去掉http//和后面的/的就运行的了呢?

(2)但是对于这个极其相似的程序却可以运行出结果:

import https://www.360docs.net/doc/c117483860.html,.InetAddress ;

public class b {

public static void main(String args[])throws Exception{

InetAddress address=InetAddress.getByName("https://www.360docs.net/doc/c117483860.html,");

System.out.println("ip: "+address.getHostAddress());

System.out.println("host: "+address.getHostName());

System.out.println("canonical host name: "+address.getCanonicalHostName());

byte[] bytes=address.getAddress();

for(byte b:bytes)

{

if(b>=0)System.out.print(b);

else System.out.print(256+b);

}

}

}

运行结果为:

13.运行下列程序出现了这样的错误,这是线程的知识,一个线程如果启动了,再启动一个的时候就会报错:https://www.360docs.net/doc/c117483860.html,ng.IllegalThreadStateException

程序如下:class thrund extends Thread{

private String name;

public thrund(String name){

https://www.360docs.net/doc/c117483860.html,=name;

}

public void run(){ //线程完成的动作

for(int j=0;j<4;j++){

System.out.println(name+"第"+j+"个");

}

}

};

public class a {

public static void main(String agrs[]){

thrund th1=new thrund("线程A");//实例化一个线程对象

th1.start(); //调用线程主体

th1.start(); //调用线程主体

}

};

运行结果如下:

14.The public type abc must be defined in its own file这样的警告是出现在我下面这样的程序中的:

所以我在百度上输入这样的问题:java程序中两个类为什么不能同时有public(其中有一个是主方法)?

得到的回答是这样的:

因为一个GM规定一个类中只能有一个PUBLIC 的而且源文件的名字只能和PUBLKIC 属性的类去一个名字。

另一种回答是这样的:同个源文件有多个公共类,编译器就找不到应该执行的main 方法了

15.运行下列泛型程序时,出现一下错误:

程序:class add{

private T y;

public T p(T y){

System.out.println(y);

return y;

}

}

public class a{

public static void main (String args[]){

add adder=new add();

//System.out.println("输出属性"+adder.getX());

//adder.p("你好,邱林和");

fun(adder);

public static void fun(add temp){

System.out.println("内容"+temp);

}

}

}

出现了如下错误:

其中这个void is an invalid type for the variable fun这个错误的解释时:

第一步:检查拼写是否错误; 第二步:检查void actionPerformed(ActionEvent ae){}函数的位置,不能让它嵌套在别的函数里。我不知道为什么,但我这样改对了。

通过这个观察上述代码确实发现这个fun方法被包含在了主方法中,所以导致这个错

误,改成下列程序后,程序运行结果如下:

public class a{

public static void main (String args[]){

add adder=new add();

//System.out.println("输出属性"+adder.getX());

//adder.p("你好,邱林和");

fun(adder);

}//一开始这个}被放在了fun函数下面,所以导致了这个错误。

public static void fun(add temp){

System.out.println("内容"+temp);

}

}

运行结果如下:

16.错误:java:Syntax error on token ";", , expected

解释是这样的:int b=3; b=b-2; 应为这2行代码写的地方还处在声明定义

阶段处。 就好象你脑子里想象着我有3块钱(第一行),但是又立马用这想象的3快去买物品(第二行) 所以卖东西的人肯定会说你(报错). 就是说,b=b-2这行代码处的位置还处于声明阶段,没有在内存中给他划分空间,你是不能操作的。要么声明为静态的,提前划分空间

17,运行以下程序时,报错:

程序为:

public class a{

public static void main(String args[]){

Runtime run= Runtime.getRuntime();

System.out.println("JVM 最大内存量:"+run.maxMemory());

Process pro=null; //声明一个Process对象,接收启动的进程

try{

pro=run.exec("Thunder.exe"); //调用本机程序,必须进行异常处理

}catch(Exception e){ //打印异常信息

e.printStackTrace();

}

try{

Thread.sleep(5000);

}catch(Exception e){

e.printStackTrace();

}

pro.destroy(); //结束此进程

}

}

运行结果为:

这一句有问题,pro=run.exec("Thunder.exe"); //调用本机程序,必须进行异常处理,里面的Thunder.exe改成”notepad“就有用,不知道为什么?

(没有解决)

https://www.360docs.net/doc/c117483860.html,ng.ArrayStoreException

当运行下列程序时出现了这样的错误:

import java.util.ArrayList;

import java.util.Collection;

import java.util.Iterator;

import java.util.List;

public class a{

public static void main(String args[]){

List al=null; //定义List对象

Collection cl=null; //定义Collention对象

al=new ArrayList(); //实例化List对象,只能是Integer

cl=new ArrayList(); //实例化Collection对象,只能是Integer

al.add(0, 34); //在指定位置增加元素

al.add(1,343);

System.out.println(al);

cl.add(5654);

cl.add(3434);

System.out.println(cl);

al.addAll(cl); //从Collection继承的方法,增加一组对象

String str[]=al.toArray(new String[] {}); //指定的泛型类型 System.out.print("指定数组类型"); //信息输出

for(int i=0;i

}

System.out.print("\n 返回对象数组:");//信息输出

Object obj[]=al.toArray(); //直接返回对象数组

for(int i=0;i

System.out.print(temp+"、");

}

}

}

程序运行结果如下:

网上的解答方式是:当你试图将错误类型的对象存储到一个对象数组时抛出的异常。例如,以下代码可生成一个ArrayStoreException: Object x[] = new String[3]; x[0] = new Integer(0); 就这么简单。 怎么避免呢?关键就是元素的内容要正确。 你看你的代码: private Object[] objects; .... objects = new ObjectSet[size]; 很明显这里用父类的引用指向了子类的实现。 那么给每个元素赋值的时候只能付这个子类对象及这个子类的后代。 你又将OBJECT赋值给它,那么就必须向下转型。

上述程序的解决办法是:

把:”List al=null; //定义List对象

Collection cl=null; //定义Collention对象

al=new ArrayList(); //实例化List对象,只能是Integer

cl=new ArrayList(); //实例化Collection对象,只能是Integer“语句中的Integer都改成String就可以了

18.address already in use: jvm_bind

在运行服务器和客户端程序的时候出现下面的错误:

可能运行错误的原因有:通常出现Address already in use: JVM_Bind错误的可能性分析

I.就是当前端口已经有别的程序在占用着,所以要么把占用这个端口的程序关闭,要么重新换一个端口

II.端口号被占用,如果你有装oracle的话,有可能是oracle使用了8080端口,oracle安装后并且如果启动了OracleHttp服务会占用8080端口

III.我认为很可能是多启动了几次TOMCAT,在ECLIPSE下重复启动TOMCAT就会出现这个问题,你去调查一下看看是否是这个原因.

IV.如果不是windows操作系统,那么80端口已经被占用.如果是windows操作系统.请检查是否装有IIS.

V.启动了多个Tomcat。

我就是因为启动了两个Tomcat,所以才会报这样的错误,通常情况下,多次启动Tomcat或者非正常关闭Myeclipse,但是占用端口的进程没有关闭,也会出现这样的错误。解决方法是关闭javaw.exe进程。

源程序是:

服务器端程序:

package a;

import https://www.360docs.net/doc/c117483860.html,.*;

import java.io.*;

public class Server{

private ServerSocket ss;

private Socket socket;

private BufferedReader in;

private PrintWriter out;

public Server(){

try{

//在服务器端指定端口10000创建队列长度为50的服务器端套接字

ss=new ServerSocket(10000);

while(true){

//告诉服务器不停地等待,直到有客户端连接到该Serversocket指定的端口

//一旦有客户端通过网络向该端口发送正确的连接请求

//该方法就会返回表示服务器与客户端连接已建立的Socket对象

socket=ss.accept();

String

clientIP=socket.getInetAddress().getHostAddress();

String clientPort=":"+socket.getLocalPort();

System.out.println("A client come in !IP:"+clientIP+clientPort);

//获得客户端发送的信息

in=new BufferedReader(new InputStreamReader(socket.getInputStream()));

String line=in.readLine();

System.out.println("Client send is:"+line);

//给客户端Socket 发送回应信息

out=new PrintWriter(socket.getOutputStream(),true);

out.println("Server:Your Message Received!");

//关闭资源

out.close();

in.close();

socket.close();

}

}catch(IOException e){

e.printStackTrace();

}

}

public static void main(String args[]){

new Server();

}

}

客户端程序:

package a;

import java.io.*;

import https://www.360docs.net/doc/c117483860.html,.*;

public class Client {

Socket socket;

BufferedReader in;

PrintWriter out;

public Client(){

try{

//连接服务器端的Socket

socket=new Socket("127.0.0.1",10000);

//读取输入字符,输出到服务器端Socket中

System.out.println("Please enter some Character");

BufferedReader line=new BufferedReader(new InputStreamReader(System.in));

out=new PrintWriter(socket.getOutputStream(),true);

//读取从服务器端socket输入的信息

in=new BufferedReader(new InputStreamReader(socket.getInputStream()));

System.out.println(in.readLine());

//关闭资源

out.close();

in.close();

socket.close();

}catch(IOException e){

e.printStackTrace();

}

}

public static void main(String args[]){

new Client();

}

}

运行时,错误时这样的:

https://www.360docs.net/doc/c117483860.html,.BindException: Address already in use: JVM_Bind at https://www.360docs.net/doc/c117483860.html,.DualStackPlainSocketImpl.bind0(Native Method)

at

https://www.360docs.net/doc/c117483860.html,.DualStackPlainSocketImpl.socketBind(DualStackPlainSocket Impl.java:96)

at

https://www.360docs.net/doc/c117483860.html,.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.jav a:376)

at https://www.360docs.net/doc/c117483860.html,.PlainSocketImpl.bind(PlainSocketImpl.java:175)

at https://www.360docs.net/doc/c117483860.html,.ServerSocket.bind(ServerSocket.java:376)

at https://www.360docs.net/doc/c117483860.html,.ServerSocket.(ServerSocket.java:237)

at https://www.360docs.net/doc/c117483860.html,.ServerSocket.(ServerSocket.java:128)

at a.Server.(Server.java:12)

at a.Server.main(Server.java:38)

解决的办法是下面这样的:

满意回答

Reason:

Address already in use:JVM_Bind

原因:

JVM已经被占用了。

你是不是有其他的Java项目(程序)在运行中,结束了他们就好了。

在运行你想要调试的项目前,要确保JVM是处于Stop状态的。

LZ你写的是不是web项目啊,如果不是上面的原因的话,那就是端口冲突了,LZ的是不是这个异常:

https://www.360docs.net/doc/c117483860.html,.BindException: Address already in use: JVM_Bind

这个错误的原因是当前程序里用到的端口已经被其他程序占用,例如,我们在eclipse里新建一个socket和serversocket进行通信,在这里面会用到端口号,当运行时,报这个这个错误,那么就是socket里的端口号与外面的程序如Oracle、tomcat 的端口号相同,办法就改掉socket里的端口,或者改tomcat 里的web.xml中的端口号就ok了。

但是没有解决这个错误,把端口3000改成8000后,运行后的结果为:

Please enter some Character

rtrttrtrtrtrt

null

19.错误调试:class cannot be resolved to a type 或者JSP import class cannot be resolved to a type

错误调试解析:class cannot be resolved to a type 或者JSP import class cannot be resolved to a type

import XXX.XXX cannot be resolved to a type ,import XXX.XXX cannot be resolved错误处理解析

类的引用不可定义为一种。

出现这种问题的情况一般是你的引用出现了二义性。

比如你引用了classes.pack.num1,但是你同时在根文件夹下有一个classes的文件夹,和把此classes文件打包成的jar包,又或者你的classpath环境变量配置的过程中同时出现了路径"."和“XXX.jar”而有两个同名同路径的.class文件可以被找到,就会引发此问题。

很多时候用vi编辑.java文件的时候,默认使用的编译存放路径是".",就是说同目录下。eclipse工程中默认.java文件的位置是src,编译文件.class的位置是classes,这种情况下,使用手动测试的时候会出现在src的文件夹下也会生成出.class文件,如果系统环境变量中有classpath="."的定义时,再次使用eclipse编译时,就会出现class cannot be resolved to a type,因为同时可以找到两个同名同路径的.class文件。

JSP impot class cannot be resolved to a type我的问题出在eclipse编译时把.class文件放在了classes文件夹下,但是tomcat去找的时候,只找了"."文件夹,结果就找不到。而在编写的时候,eclipse是能找到的,所以编写时不报错,运行时报错。如果你在.文件夹下也生成.class 文件,tomcat能找到了,eclipse又找重了,还是不行。

我的解决办法是,在tomcat启动时,为tomcat添加引用路径,先把classes文件夹导入到JVM 中。tomcat在调用类的时候,就不会找不到了。

具体操作方法是,使用eclipse的tomcat插件,在eclipse的主界面菜单window下的preferences 对话框中找到tomcat插件的那一项,选择JVMsetting,有一个classpath(before generated classpath)中,导入你的classes文件夹。就可解决此问题。

相同的,如果tomcat运行时出现了找不到引用的jar包,也可以在这里设置导入。

后来发现经过myEclipse编译过的带有tomcat属性的文件会自动生成.class文件到目标工程,$tomcat\webapps\$project\web-inf\classes文件夹下。如果你的tomcat的配置文件路径设置正确的话,MyEclipse在调试,或者tomcat单独启动的时候,读取的就是该文件夹下的.class 文件。

如果你的tomcat的配置文件使用的是工程的绝对路径,并指向你的MyE的工作目录workspase的时候,就要注意在调试和发布的时候,一定别忘了把你编译好的.class文件考入相应的包下。否则tomcat会报此错或者class not found的错误。

如果还不对,请检查系统环境变量class_path是不是重复设置了可以导致二义性的路径。

或者是原有的同包,同名的类的拷贝版被加入了路径。

WEB-INF\classes

class cannot be resolved to a type 问题的解决(2011-12-01 13:42:36)转载▼标签:it 分类:

Java

错误:class cannot be resolved to a type 或者JSP import class cannot be resolved to a type

import XXX.XXX cannot be resolved to a type ,import XXX.XXX cannot be resolved

错误原因:引用出现了二义性。

也就是说在你的工程中存在两个用于存放.class文件的classes文件夹,而加载tomcat的时候,tomcat的路径是不确定的,也可能找到了根本没有存放这个类的classes文件夹

解决方法:

网上查到的解决办法是在tomcat启动时,为tomcat添加引用路径,先把classes文件夹导入到JVM中。tomcat在调用类的时候,就不会找不到了。

具体操作方法是,使用eclipse的tomcat插件,在eclipse的主界面菜单window下的preferences 对话框中找到tomcat插件的那一项,选择JVMsetting,有一个classpath(before generated classpath)中,导入你的classes文件夹。就可解决此问题。

但是我使用的MyEclipse,这里边用到的是自带的Tomcat,跟上边提到的配置方式不太一样。

我是修改了工程的文件目录,在新建此工程的时候默认的WEB板块的名称是WebRoot,之后我为了条理清楚,新建了一个Folder用来存放我的JSP文件,此时就有两个classes文件夹,一个是我新建的Folder对应的,另一个是原有的WebRoot的,所以应该把WebRoot删去,避免混淆(看到一本书上讲JavaBean设定时也是这么说的,要删去原有的,避免混淆)。

20NumberFormatException异常

2011-10-27 11:49:02| 分类:java技术|字号大中小订阅

1. 对应String类型的对象使用println()方法时,如果对象为null,将打印null而不是引发NullPointerException,由此引用的问题是容易造成错觉,对于以后对字符串的操作容易引起问题。

2. 引发NullPointerException异常,主要原因是没有对对象的存在性进行验证,在jsp编程中经常出现:if

(request.getParameter(“username”).equals(“xxx”))、

out.println(session.getAttribute(“record”))等。解决这个问题的方法是在使用前进行判空比较:if

(request.getParameter(“username”)!=null) {if if

(request.getParameter(“username”).equals(“xxx”))…}。

3. 引发NumberFormatException异常:主要原因是将用户提交的内容转换为整数或者浮点数时用户输入了其它非法字符。处理的主要方式是在需要进行转换的地方使用try/catch块捕获此异常然后提示用户输入合法数据。

4. 引发StringIndexOutOfBoundsException异常:主要原因是使用String的substring()、charAt()等方法,而字符串的长度不够,就会引发此异常;在字符串为null时也会引发NullPointerException。解决的方法是判空,判断长度或者转换为字节数组。考虑到这些操作很多,可以将之封装到javabean中。

5. 引发NoClassDefFoundError错误,主要原因是类路径或者类文件放置错误,类文件的放置要符合服务器的要求。

6. 引发https://www.360docs.net/doc/c117483860.html,ng.Error错误,主要原因是对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致系统无法正常运行;对系统所访问的外部资源关闭次数太多,外部系统无法正常处理;所系统访问的外部资源出现异常情况。解决的方法是:访问外部资源前,首先检查该资源(如数据库) 是否可正常连接或操作;访问外部资源时,如果进行了连接,一定进行关闭操作,并仅进行一

次关闭操作;尽量在同一操作中共享外部资源,以减少该操作对资源的消费,提高程序的执行效率。

21.eclipse 遇关键字enum编译问题解决

分类:Others2008-04-03 17:48793人阅读评论(1)收藏举报今天公司系统升级JDK1.4 到JDK1.5, 结果工程在eclipse中编译不能通过:Enumeration enum = …………

但是eclipse报错:

Multiple markers at this line

- Enumeration cannot be resolved

- Syntax error on token "enum", delete this token

原因是在JDK1.5 中,enum 被定义为关键字,这样就和在JDK1.4自编写的代码冲突。最简单的解决办法是,把变量改名为(enum1,enum2等),以回避关键字。

但是对于workflow复杂的公司来说,每修改代码都需要提交很复杂的JOB,还有另外一种解决办法。

在eclipse中,右键点击工程,Properities->Java Compiler

选择Enable project specific settings

JDK Compliance

Complier compliance level: 1.4

选择Use default compliance settings

OK

这样设置能使工程在标签识别的时候识别按照JDK1.4 来识别,又不影响JDK升级,而且不必修改代码,原来的代码可以在JDK1.5 正常运行,我就是这么做的,如果有需要,你们也可以试试:)

Java中常见错误和异常解决方法(打印)

https://www.360docs.net/doc/c117483860.html,ng.NullPointerException 原因是:有空指针,有地址没赋值 2.Exception in thread "main" https://www.360docs.net/doc/c117483860.html,ng.ArithmeticException: / by zero 原因是除数是0 3.ArrayIndexOutOfBoundsException 原因是:数组越界 https://www.360docs.net/doc/c117483860.html,ng.NumberFormatException 原因是:数字格式化有问题 5.Unhandled exception type Exception 原因是:没有进行异常处理 6.进行国际化操作的时候遇到这样的错误:Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name Message, locale zh_CN 答:因为在命令提示符中,是没有错误的 解决方法是:在myeclipse中,会出现这个错误 java国际化之Can't find bundle for base name 1.初步学习 最近在学习ResourseBundle时遇到了“Can't find bundle for base name ”这个错误搞了很 久才解决了。原因就是类路径问题要将属性文件放在类路径中!百度里很多都是教程但没有涉及到解决方法!2.中文显示: 测试文件 java 代码 package com.lht.ResourseBundleStudy; import java.util.ResourceBundle; public class ResourseBundleDemo { public static void main(String[] args) { ResourceBundle resource = ResourceBundle.getBundle("test"); System.out.print(resource.getString("msg0") + "!"); System.out.println(resource.getString("msg1") + "!"); } } test.properties msg0="Hello World" msg1="da jia hao" 开始自己测试的时候:将属性文件放在bin/下也试过也不行无赖中就在google中搜索了一 下终于在sun的java论坛

Java语言提供两种异常处理机制

得到一个异常对象是,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型异常的方法后,运行时系统把当前异常交给这个方法处理;如果找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。捕获异常是通过try-catch-finally语句实现的。语法为:try{ ... }catch(ExceptionName1 e){ ... }catch(ExceptionName2 e){ ... } ... }finally{ ... } 2)声明抛弃异常:当Java 程序运行时系统得到一个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃异常。声明抛弃异常是在一个方法声明中的throws子句中指明的。如:public int read() throws IOException{ ... } 其中throws IOException就是声明抛弃异常,throws后可以跟多个异常类型。 1. https://www.360docs.net/doc/c117483860.html,ng.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话) 2. https://www.360docs.net/doc/c117483860.html,ng.classnotfoundexception 这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package的路径加上。 3. https://www.360docs.net/doc/c117483860.html,ng.arithmeticexception 这个异常的 好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。 4. 是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。 5. https://www.360docs.net/doc/c117483860.html,ng.illegalargumentexception 这个异常的解释是"方法的参数错误",很多j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常,再比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。 6. https://www.360docs.net/doc/c117483860.html,ng.illegalaccessexception 这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了package的情况下要注意这个异常。其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。关于异常的全部说明,在api里都可以查阅。算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:ArrayIndexOutOfBoundsException 违背安全原则异常:SecturityException 文件已结束异常:EOFException 文件未找到异常:FileNotFoundException 字符串转换为数字异常:NumberFormatException 操作数据库异常:SQLException 输入输出异常:IOException 方法未找到异常:NoSuchMethodException https://www.360docs.net/doc/c117483860.html,ng.AbstractMethodError 抽象方法错误。当应用试图调用抽象方法时抛出。https://www.360docs.net/doc/c117483860.html,ng.AssertionError 断言错。用来指示一个断言失败的情况。https://www.360docs.net/doc/c117483860.html,ng.ClassCircularityError 类循环依赖错误。在初始化一个类时, 个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。https://www.360docs.net/doc/c117483860.html,ng.Error 错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。https://www.360docs.net/doc/c117483860.html,ng.ExceptionInInitializerError 初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异

java异常处理例题代码

App9_1.java:输出一个数组的所有元素,捕获数组下标越界异常和除娄为0异常。public class App9_1{ public static void main(String args[]){ int i; int[] a={1,2,3,4}; for(i=0;i<5;i++) System.out.println(" a["+i+"]="+a[i]); System.out.println("5/0"+(5/0)); } } App9_2.java:使用try-catch-finall语句对程序中的异常进行捕获与处理。 public class App9_2{ public static void main(String args[]){ int i; int a[]={1,2,3,4}; for (i=0;i<5;i++){ try{ System.out.print("a["+i+"]/"+i+"="+(a[i]/i)); } catch(ArrayIndexOutOfBoundsException e){ System.out.print("捕获到了数组下标越界异常"); } catch(ArithmeticException e){ System.out.print("异常类名称是:"+e); //显示异常信息 } catch(Exception e){ System.out.println("捕获"+e.getMessage()+"异常!"); //显示异常信息 } finally{ System.out.println(" finally i="+i); } } System.out.println("继续!!"); } } App9_3.java:使用throw语句在方法中抛出异常。 public class App9_3{ public static void main(String args[]){ int a=5,b=0; try{ if (b==0) throw new ArithmeticException(); //抛出异常,不是必须的 else System.out.println(a+"/"+b+"="+a/b); //若不抛出异常,则运行此行

Java常见异常和错误

Java常见异常和错误 1、在某一路径下执行编译好的class文件出错。 异常如下: E:\liwy>java Test98 Exception in thread "main" https://www.360docs.net/doc/c117483860.html,ng.NoClassDefFoundError: Test98 如果出现了以上错误提示,常见问题有如下两种:1 大小写写错了,2 路径不正确。 2、数组错误,访问不存在的数组,数组超出绑定,代码如下: public class ArrayDemo { public static void main(String args[]){ int array[] = null; //声明数组 array = new int[3]; //为数组开辟空间,大小为3 for(int i=0;i

java异常处理试题及答案

异常处理练习题 一、选择题 1.java中用来抛出异常的关键字是 (C) A、try B、catch C、throw D、finally 2.关于异常,下列说法正确的是(A) A、异常是一种对象 B、一旦程序运行,异常将被创建 C、为了保证程序运行速度,要尽量避免异常控制 D、以上说法都丌对 3.(A)类是所有异常类的父类。 A、Throwable B、Error C、Exception D、AWTError 4.java语言中,下列哪一子句是异常处理的出口(C) A、try{…}子句 B、catch{…}子句 C、finally{…}子句 D、以上说法都丌对 5.下列程序的执行,说法错误的是 (C) public class MultiCatch { public static void main(String args[]) { try { int a=args.length; int b=42/a; int c[]={1}; c[42]=99; System.out.println(“b=”+b); } catch(ArithmeticException e) { System.out.println(“除0异常:”+e); } catch(ArrayIndexOutOfBoundsException e) { System.out.println(“数组超越边界异常:”+e); } } } A、程序将输出第15行的异常信息 B、程序第10行出错 C、程序将输出“b=42”

D、程序将输出第15和19行的异常信息 6.下列程序的执行,说法正确的是(D) class ExMulti { static void procedure() { try { int c[]={1}; c[42]=99; } catch(ArrayIndexOutOfBoundsException e) { System.out.println(“数组超越界限异常:”+e); } } public static void main(String args[]) { try { procedure(); int a=args.length; int b=42/a; System.out.println(“b=”+b); } catch(ArithmeticException e) { System.out.println(“除0异常:”+e); } } } A、程序只输出第12行的异常信息 B、程序只输出第26行的异常信息 C、程序将不输出异常信息 D、程序将输出第12行和第26行的异常信息 7.下面程序抛出了一个“异常”并捕捉它。请在横线处填入适当内容完成程序。class TrowsDemo { static void procedure() throws IllegalAccessExcepton { System.out.println(“inside procedure”); throw__new_____IllegalAccessException(“demo”);

Java中常见异常类型及分析

Java常见异常类型及原因分析 这里介绍几种常见的异常并对原因进行分析,包括: ●NullPointException异常; ● ClassCastException异常; ● ArrayIndexOutOfBoundsException异常; ●UnsupportedClassVersionError错误; ●NumberFormatExceptio异常 ●堆栈溢出和内存溢出。 1 NullPointException异常 顾名思义,NullPointerException是空指针异常。但是在Java中没有指针,怎么会有空指针异常呢? 在C++中,声明的指针需要指向一个实例(通过new方法构造),这个指针可以理解为地址。 在Java中,虽然没有指针,但是有引用(通常称为对象引用,一般直接说对象),引用也是要指向一个实例对象(通过new方法构造)的,从这种意义上说,Java中的引用与C++中的指针没有本质的区别,不同的是,处于安全的目的,在Java中不能对引用进行操作,而在C++中可以直接进行指针的运算,例如book++等。 所以这里的NullPointerException虽然不是真正的空指针异常,但本质上差不多,是因为引用没有指向具体的实例,所以当访问这个引用的方法的时候就会产生这种异常。例如下面的代码: String str = "这是一个测试用的字符串!"; System.out.println(str.length()); 这段代码没有问题,但是如果改成下面的代码: String str ; System.out.println(str.length()); 就会产生NullPointerException异常了,当然一般人不会犯这样低级的错误。 那这种异常通常是如何产生的呢?比较多见的是下面的两种情况: 1)把调用某个方法的返回值直接赋值给某个引用,然后调用这个引用的方法。在这种情况下,如果返回的值是null,必然会产生NullPointerException异常。例如: String userName=request.getParameter("userName"); if(userName.length()==0) ...... else ...... 如果request.getParameter("userName")的结果为null,则这里就会产生这种异常。 2)在方法体中调用参数的方法。这种情况下,如果调用方法的时候传递进来的值是null,也要产生NullPointerException异常。 要解决这种异常,只需要检查异常出现在第几行(通常在集成开发环境中会提示用户错误发生在第几行),然后查看调用了哪个对象的方法,然后检查这个对象为什么没有赋值成

Java中异常处理

第13章异常课堂练习(2理论+2习题课+2上机) 【教学目标】 ?了解异常和异常处理的概貌(第13.2节)。 ?探究使用异常处理的优点(第13.3节)。 ?区别异常的类型:Error (致命的) 和Exception (非致命的), 以及必检和免检异常(第13.4节)。 ?在方法头中声明异常(第13.5.1节)。 ?在方法中抛出异常(第13.5.2节)。 ?编写try-catch 块处理异常(第13.5.3节)。 ?解释异常是如何传播的(第13.5.3节)。 ?在try-catch块中使用finally子句(第13.6节)。 ?只为非预期错误使用异常(第13.7节)。 ?在catch 块中重新抛出异常(第13.8节)。 ?创建链式异常(第13.9节)。 ?定义自定制的异常类(第13.10节)。 【教学重点】 ?了解异常的处理机制 ?异常的解决方法 ?Exception类的作用及其使用方法 ?必检异常、免检异常的特点 【基本知识点】 1、常见异常演示 (1)算数异常:https://www.360docs.net/doc/c117483860.html,ng.ArithmeticException 在算术运算中,0作为除数时,系统将产生该异常,示例: public static void main(String[] args) { int x=10; int y=0; int m=x/y; } Exception in thread "main" https://www.360docs.net/doc/c117483860.html,ng.ArithmeticException: / by zero at exception.NotChecketException.main(NotChecketException.java:7)(2)数组越界异常:https://www.360docs.net/doc/c117483860.html,ng.ArrayInd exOutOfBoundsException 在数组下标越界时,将产生该异常,示例:

常见异常列表(精)

算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:ArrayIndexOutOfBoundsException 违背安全原则异常:SecturityException 文件已结束异常:EOFException 文件未找到异常:FileNotFoundException 字符串转换为数字异常:NumberFormatException 操作数据库异常:SQLException 输入输出异常:IOException 方法未找到异常:NoSuchMethodException https://www.360docs.net/doc/c117483860.html,ng.AbstractMethodError 抽象方法错误。当应用试图调用抽象方法时抛出。 https://www.360docs.net/doc/c117483860.html,ng.AssertionError 断言错。用来指示一个断言失败的情况。 https://www.360docs.net/doc/c117483860.html,ng.ClassCircularityError 类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出该异常。 https://www.360docs.net/doc/c117483860.html,ng.ClassFormatError 类格式错误。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。 https://www.360docs.net/doc/c117483860.html,ng.Error 错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应

被应用程序捕获的反常情况。 https://www.360docs.net/doc/c117483860.html,ng.ExceptionInInitializerError 初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。 https://www.360docs.net/doc/c117483860.html,ng.IllegalAccessError 违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。 https://www.360docs.net/doc/c117483860.html,ng.IncompatibleClassChangeError 不兼容的类变化错误。当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。 https://www.360docs.net/doc/c117483860.html,ng.InstantiationError 实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常. https://www.360docs.net/doc/c117483860.html,ng.InternalError 内部错误。用于指示Java虚拟机发生了内部错误。 https://www.360docs.net/doc/c117483860.html,ng.LinkageError 链接错误。该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。 https://www.360docs.net/doc/c117483860.html,ng.NoClassDefFoundError 未找到类定义错误。当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误。 https://www.360docs.net/doc/c117483860.html,ng.NoSuchFieldError 域不存在错误。当应用试图访问或者修改某类的某个域,而该类的定义中没有该域的定义时抛出该错误。 https://www.360docs.net/doc/c117483860.html,ng.NoSuchMethodError

Java作业实验六---异常处理

提交方式: 把文件名改为学号姓名,提交文档和源码(只需提交最顶层包文件夹) 实验六异常处理 一、实验目的 1.学会利用Try-catch-finally语句来捕获和处理异常; 2.掌握自定义异常类的方法。 二、实验要求 1.通过编程理解系统异常处理的机制和创建自定义异常的方法。 2.掌握基础类。 三、实验内容 (一)异常处理机制 1. 编写使用try…catch 语句处理异常的程序文件Demo4_1.java,

编译并运行程序,并把运行结果复制在下面 。 注意:如果在catch 语句中声明的异常类是Exception,catch 语句也能正确地捕获,这是因为Exception是ArithmeticException的父类。如果不能确定会发生哪种情况的异常,那么最好指定catch的参数为Exception,即说明异常的类型为Exception。 2、源文件是Demo3_2.java。要捕捉的异常是除数为零和数组下标越界。通过修改a和c[]下标值体验程序。 【思考】 ①先运行上面程序,观察运行结果。 ②按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里那些语句没有被执行,为什么? 块外那些语句可被执行到,为什么? 修改a=0,保持c[2]=200; 保持a=10,修改c[3]=200, 修改a=0,修改c[3]=200; ③再添加一个catch{Exception e}{ },位置在最前面,观察编译信息,说明什么? 3、编写Demo3_3.java 程序,计算两数相除并输出结果。使用两个catch子句,分别捕捉除数为0的异常和参数输入有误异常。源代码如下:

Java 异常(习题)

java异常(习题) 练习 1. 填空 Java 中所有的错误都继承自______类;在该类的子类中, _______类表示严重的底层错误,对于这类错误一般处理的方式是___________; _______类表示例外、异常。 2. 查api,填空 异常类java.rmi.AlreadyBoundException,从分类上说,该类属于__________(已检查| 未检查)异常,从处理方式上说,对这种异常___________________; 异常类java.util.regex.PatternSyntaxException,从分类上说,该类属于_________(已检查|未检查)异常,从处理方式上说,对这种异常__________________。 4. (try-catch-finally)有如下代码:

问:当读入的n 分别为1,2,3,4,5 时,输出的结果分别是什么?

5. (自定义异常)创建两个自定义异常类MyException1 和MyException2。 要求: 1) MyException1 为已检查异常,MyException2 为未检查异常 2) 这两个异常均具有两个构造函数,一个无参,另一个带字符串参数,参数表示产生异常的详细信息。

问: 在//1 处,填入以下________代码可以编译通过,在//2 处,填入_________代码可以编译通过。 A. throws java.io.IOException B. throws java.io.FileNotFoundException, java.io.EOFException C. throws java.sql.SQLException D. 不能抛出任何异常。

最新java异常处理作业(1113132845)

Java异常处理作业 孙月巧 1、参考下面的程序,试修改程序,捕获相关异常,使得程序能正常运行。【提示:用错误数据测试,即可得到异常类名,运行时主方法参数输入abc 测试】 package November; import java.util.Scanner; public class StringIndexOutOf{ public static void main(String args[]){ System.out.println("请输入一个字符串:"); try{ Scanner reader=new Scanner(System.in); String str = reader.nextLine(); System.out.println("第四个字符为 " + str.charAt(3)); int aa = Integer.parseInt(str); System.out.println("平方为 " + aa * aa); } catch(StringIndexOutOfBoundsException e){ System.out.println("您输入的数值下标越界"); } catch(NumberFormatException nfe){ System.out.println("您输入的不是数字"); } } } 2、从命令行得到5个整数,放入一整型数组,然后打印输出,要求:如果输入数据不为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),显示“请输入至少5个整数”。 package November; public class Test2 { public static void main(String[] args) { System.out.println("请输入五个整数:"); try {

JAVA常见编译错误信息及说明

Java编译错误信息及说明 1、java:33:不是语句 解释:程序中出现了没有任何意义的字符(串),可能是无意中打出了没有任何意义的字符; 2、java:34:需要';' 解释:某条语句没有以分号结束; 3、java:36:缺少返回语句 解释:带返回值的函数缺少return语句; 4、java:33:不兼容的类型 解释:运算符两边的数据类型不一致或者不能做隐式转换; 5、java:36:无法访问的语句 解释:此语句永远不可能被执行,可能是此语句之前存在类似于while(true)的语句,导致此语句永远不可能被执行; 6、java:34:非法的表达式开始 解释:有不符合语法规范的表达式出现; 7、java:34:找不到符号 解释:使用了没有定义或没有引入的变量; 8、java:33:非法字符:\65307 解释:在中文输入状态下输入了一些标点符号; 9、java:18:不可转换的类型 解释:运算符两边的数据类型不一致或者不能做隐式转换; 10、java:19:"else"不带有"if" 解释:编译器找到else语句但是没有找到与之对应的if语句,可能是由于大括号没有成对出现;

11、java:12:可能损失精度 解释:把高精确度类型的数据赋值给低精确度类型的变量; 12、java:17:需要')' 解释:括号没有成对出现; 13、java:8:可能尚未初始化变量s 解释:局部变量s没有赋初值; 14、java:7:不可比较的类型:int和Boolean 解释:运算符两边操作数的数据类型不符合运算符的使用规范; 15、java:6:已在isLeap(int)中定义year 解释:变量year被重复定义; 16、java:21:字符字面值的行结尾不合法 解释:程序语句的结尾不是java规定的结束符号,而是其他的符号; 17、java:9:需要<标识符> 解释:可能是由于用户指定了数据类型,但未指定该类型的变量名; 18、java:8:无法从静态上下文中引用非静态变量this 解释:在静态方法中使用了非静态变量this; 19、java:12:在switch或loop外部中断 解释:在非循环语句或非switch语句中使用了中断循环功能的语句break; 20、java:21:对于结果类型为void的方法,无法返回值 解释:空返回值方法中出现了return语句; 21、java:12:需要数组,但找到int 解释:在应该出现数组的地方没有找到数组类型的变量,而是找到int类型的变量; 22、java:13:无法将Node中的setData(int)应用于()

java的常见问题及解决方法

1."https://www.360docs.net/doc/c117483860.html,mons.collections.SequencedHashMap"'s signer information does not match signer information of other classes in the same package 这是由于struts提供的commons-beanutils.jar和hibernate提供的commons-collections.jar冲突成的, 可以从spring提供的lib中找到这个两个jar https://www.360docs.net/doc/c117483860.html,ng.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.IdentNode 用hql 时,忘了给表名加别名,如select p from Position,应该是select p from Position p 3.The Server didn 't send back a proper XML response 用FCKEditor时 原因:解析不了xml文件 解决方法: 情况一:web.xml的配置是否正确,具体查看《FCKEditor使用指南.pdf》,还有fckeditor自带的几个jar 包 情况二:加入serializer.jar,xalan.jar 情况三:把项目下的fckeditor包删了,重新加入一遍 https://www.360docs.net/doc/c117483860.html,.eclipse.swt.SWTError: No more handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)] SWTError:没有更多的处理[未知Mozilla的路径 (MOZILLA_FIVE_HOME未设置)] 环境:linux下运行swt程序(我出现此问题是,在linux下嵌套浏览器) 原因:firefox版本不一致 解决:重装一个firefox,并设置相关变量 5.Exception in thread "main" org.eclipse.swt.SWTError: No more handles [Could not detect registered XULRunner to use] 环境:用XULRunner 在java application中嵌套浏览器 原因:没有注册XULRunner 解决:window下环境中,在程序中加入,如(第二个参数是下载解压后的存放路径): static{ System.setProperty("org.eclipse.swt.browser.XULRunnerPath", "C:\\xulrunner"); } 6.Exception in thread "main" https://www.360docs.net/doc/c117483860.html,ng.UnsatisfiedLinkError: no swt-win32-3536 or swt-win32 in swt.library.path, java.library.path or the jar file

java异常处理试题及答案

j a v a异常处理试题及答 案 This model paper was revised by the Standardization Office on December 10, 2020

异常处理练习题 一、选择题 中用来抛出异常的关键字是 (C) A、try B、catch C、throw D、finally 2.关于异常,下列说法正确的是(A) A、异常是一种对象 B、一旦程序运行,异常将被创建 C、为了保证程序运行速度,要尽量避免异常控制 D、以上说法都丌对 3.(A)类是所有异常类的父类。 A、Throwable B、Error C、Exception D、AWTError 语言中,下列哪一子句是异常处理的出口(C) A、try{…}子句 B、catch{…}子句 C、finally{…}子句 D、以上说法都丌对 5.下列程序的执行,说法错误的是 (C) public class MultiCatch

{ public static void main(String args[]) { try { int a=; int b=42/a; int c[]={1}; c[42]=99; } catch(ArithmeticException e) { 除0异常:”+e); } catch(ArrayIndexOutOfBoundsException e) {

数组超越边界异常:”+e); } } } A、程序将输出第15行的异常信息 B、程序第10行出错 C、程序将输出“b=42” D、程序将输出第15和19行的异常信息 6.下列程序的执行,说法正确的是(D)class ExMulti { static void procedure() { try { int c[]={1};

Java异常处理总结(精)

Java 异常处理总结 找到一个关于异常总结的很详细的文章, 分享下. 异常在我们编程中很重,在适当的位置,合理的处理或者抛出异常,对程序来说至关重要。转:异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C 开始,你也许已经知道如何用if...else... 来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦! Java 语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常(这里的异常包括错误概念),定义异常处理的规范,在1.4版本以后增加了异常链机制,从而便于跟踪异常!这是Java 语言设计者的高明之处,也是Java 语言中的一个难点,下面是我对Java 异常知识的一个总结,也算是资源回收一下。 一、Java 异常的基础知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误https://www.360docs.net/doc/c117483860.html,ng.Error ;如果你用System.out.println(11/0,那么你是因为你用0做了除数,会抛出https://www.360docs.net/doc/c117483860.html,ng.ArithmeticException 的异常。有些异常需要做处理,有些则不需要捕获处理,后面会详细讲到。天有不测风云,人有旦夕祸福,Java 的程序代码也如此。在编程过程中,首先应当尽可能去避免错误和异常发生,对于不可避免、不可预测的情况则在考虑异常发生时如何处理。 Java 中的异常用对象来表示。Java 对异常的处理是按异常分类处理的,不同异常有不同的分类,每种异常都对应一个类型(class ),每个异常都对应一个异常(类的)对象。 异常类从哪里来?有两个来源,一是Java 语言本身定义的一些基本异常类型,二是用户通过继承Exception 类或者其子类自己定义的异常。Exception 类及其

JAVA实验报告5 异常处理实验

中南财经政法大学武汉学院实验报告 实验课名称:__JAVA语言____ 学生姓名:_______ 专业班级:__网络工程1104 学号:11071125__ 开课时间:___2013年2月26日_ 教务处制

《Java程序设计基础》实验报告 实验序号:05实验项目名称:异常处理 学号11071125姓名专业、班级 实验地点计-202指导教师时间2013-5-14一、实验目的及要求 了解异常处理机制; 了解异常的概念; 掌握抛出异常、捕获异常和异常处理的方法; 了解自定义异常类的定义和使用方法。 二、实验设备(环境)及要求 1、Windows-XP操作系统 2、Eclipse应用程序 三、实验内容与步骤 编写一个类ExceptionTest1,在main方法中使用try、catch、finally: ①在try块中,编写被0除的代码。 ②在catch块中,捕获被0除所产生的异常,并且打印异常信息。 ③在finally块中,打印一条语句。 四、实验结果与数据处理 import java.util.*; public class ExceptionTest1{ public static void main(String[]args){ Scanner in=new Scanner(System.in); try{ System.out.print("请输入被除数:"); double beichushu=in.nextDouble(); System.out.print("请输入除数:"); double chushu=in.nextDouble(); if(chushu==0) throw new ArithmeticException("请输入不为0的数字!"); double i=(beichushu/chushu); System.out.println("二者的商为:"+i);}catch(InputMismatchException e1){ System.out.println("请输入数字!");

java中常见的NullPointerException异常

java中常见的NullPointerException异常 下面列出了我们学习java时常出现的NullPointerException异常,以及它的解决办法 1,空指针错误https://www.360docs.net/doc/c117483860.html,ng.NullPointerException 使用基本的JAVA数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便不能通过编译,因此使用基本的JAVA数据类 型(double,float,boolean,char,int,long)一般不会引起空指针异常。由此可见,空指针异常主要跟与对象的操作相关。 下面先列出了可能发生空指针异常的几种情况及相应解决方案: 不管对象是否为空就直接开始使用。 (JSP)代码段1:out.println(request.getParameter("username")); 描述:代码段1的功能十分简单,就是输出用户输入的表域"username"的值。 说明:看上去,上面的语句找不出什么语法错误,而且在大多数情况下也遇不到什么问题。但是,如果某个用户在输入数据时并没有提供表单域"username"的值,或通过某种途径绕过表单直接输入时,此时request.getParameter("username")的值为空(不是空字符串,是空对象null。),out对象的println方法是无法直接对空对象操作,因此代

码段1所在的JSP页面将会抛出"https://www.360docs.net/doc/c117483860.html,ng.NullPointerException"异常。即使对象可能为空时,也调用https://www.360docs.net/doc/c117483860.html,ng.Object或Object对象本身的一些方法如toString(), equals(Object obj)等操作。 (JSP)代码段2:String userName = request.getParameter("username"); If (userName.equals("root")) {....} 描述:代码段2的功能是检测用户提供的用户名,如果是用户名称为"root"的用户时,就执行一些特别的操作。 说明:在代码段2中,如果有用户没有提供表单域"username"的值时,字符串对象userName为null值,不能够将一个null的对象与另一个对象直接比较,同样,代码段2所在的JSP页面就会抛出 (https://www.360docs.net/doc/c117483860.html,ng.NullPointerException)空指针错误。 (JSP)代码段3:String userName = session.getAttribute("https://www.360docs.net/doc/c117483860.html,ername").toString(); 描述:代码段3的功能是将session中https://www.360docs.net/doc/c117483860.html,ername的值取出,并将该值赋给字符串对象userName。说明:在一般情况下,如果在用户已经进行某个会话,则不会出现什么问题;但是,如果此时应用服务器重新启动,而用户还没有重新登录,(也可能是用户关闭浏览器,但是仍打开原来的页面。)那么,此时该session的值就会失效,同时

相关文档
最新文档