导航:首页 > 源码编译 > method编译时异常怎么处理

method编译时异常怎么处理

发布时间:2022-04-24 00:06:32

java编译时出现这个错误,我不知道怎么办了。大家帮帮我啊~在线等

因为你实现了ItemListener接口,但是没有Override里面所有的方法,
java要求实现接口的类,必须Override里面所有的方法

建议:在代码最后添加
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub

}

就能解决以上的编译错误

㈡ Java编程中常见的错误有哪些

相信作为程序员的我们在对程序进行编译过程中经常会遇到错误,或者在运行过程中出现错误,在这里主要跟大家谈谈经常遇到的一些异常与错误,以及解决办法。

异常是指程序在编译或运行过程出现的错误。

在java.lang包中Throwable包含了所有的异常。

Error (错误) 和Exception(异常)

(1)Error(错误)

一旦发生无法修复,但可以避免发生。

常见错误类:

IOError:I/O错误,当发生严重的I/O错误时,抛出此错误。
VirtualMachineError:虚拟机错误,当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。

StackOverflowError:栈内存满了,当应用程序递归太深而发生堆栈溢出时,抛出该错误。

OutofMemoryError:堆内存满了,因为内存溢出或没有可用的内存提供给垃圾回收器时,Java 虚拟机无法分配一个对象,这时抛出该异常。

以上是一些常见的错误,在Error类中还有一些别的错误(参照文件Java.lang.Throwable.Error).

(2)Exception(异常)

一旦发生,可以捕获并处理,不会导致程序终止,有时可以避免有时无法避免。

异常的分类:

1.编译时异常(需要强制处理) 2.运行时异常(不需要强制处理)

常见的异常有:

IOException:输入输出流异常
FileNotFoundException:文件找不到的异常
ClassNotFoundException:类找不到的异常
DataFormatException:数据格式化异常
NoSuchFieldException:没有匹配的属性异常
NoSuchMethodException:没有匹配的方法异常

SQLException:数据库操作异常
TimeoutException:执行超时异常

常见的运行时异常:

RuntimeException:运行时异常
NullPointerException:空指针异常

:数组越界异

ClassCastException:类型转换异常
IllegalArgumentException:非法的参数异常
InputMismatchException:输入不匹配

以上是常见的一些异常,另外还有别的异常,参见文件:Java.lang.Throwable.Exception

既然我们常常会遇到一些异常,那我们如何来处理这些异常就是一个急需解决的事情。

(1) 如何处理编译时异常?

方法一:将需要处理的代码块放在一个try...catch...中
try{
//需要处理异常的代码
}catch(XXXException ef){
ef.printStackTrace();
}

我们方法一就是要将我们不确定的代码放入try......catch中,先进行try一下,如果没有异常,则不会触发catch,没有输出,一旦出现异常,那么catch就会工作,在catch中捕获异常信息,根据异常信息进行补救措施。

如以下代码:

从结果可以看出,我们在输入数据的时候出现错误,这样通过自定义异常能够让我们更直接快速的找到运行或编译时的异常。

在上述中我们分别提到了三种throw,分别是Throwable,Throws以及throw,那么到底三者有什么区别?

Throwable:是指在在Java.lang包中的一个类,其包含了所有的异常和错误,其中类Error和Exception 是它

的子类。

Thows:是指在解决编译时异常,将方法中异常抛给上一级,在方法后面要加Throw Exception来进行抛。

throw:是指在自定义异常时,如果方法出现异常,那么将作为引用方法的对象抛出。即抛出异常。

㈢ Java编程中 常见的异常有哪几种

相信作为程序员的我们在对程序进行编译过程中经常会遇到错误,或者在运行过程中出现错误,在这里主要跟大家谈谈经常遇到的一些异常与错误,以及解决办法。

异常是指程序在编译或运行过程出现的错误。

在java.lang包中Throwable包含了所有的异常。

Error (错误) 和Exception(异常)

(1)Error(错误)

一旦发生无法修复,但可以避免发生。

常见错误类:

IOError:I/O错误,当发生严重的I/O错误时,抛出此错误。
VirtualMachineError:虚拟机错误,当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。

StackOverflowError:栈内存满了,当应用程序递归太深而发生堆栈溢出时,抛出该错误。

OutofMemoryError:堆内存满了,因为内存溢出或没有可用的内存提供给垃圾回收器时,Java 虚拟机无法分配一个对象,这时抛出该异常。

以上是一些常见的错误,在Error类中还有一些别的错误(参照文件Java.lang.Throwable.Error).

(2)Exception(异常)

一旦发生,可以捕获并处理,不会导致程序终止,有时可以避免有时无法避免。

异常的分类:

1.编译时异常(需要强制处理) 2.运行时异常(不需要强制处理)

常见的异常有:

IOException:输入输出流异常
FileNotFoundException:文件找不到的异常
ClassNotFoundException:类找不到的异常
DataFormatException:数据格式化异常
NoSuchFieldException:没有匹配的属性异常
NoSuchMethodException:没有匹配的方法异常

SQLException:数据库操作异常
TimeoutException:执行超时异常

常见的运行时异常:

RuntimeException:运行时异常
NullPointerException:空指针异常

:数组越界异

ClassCastException:类型转换异常
IllegalArgumentException:非法的参数异常
InputMismatchException:输入不匹配

以上是常见的一些异常,另外还有别的异常,参见文件:Java.lang.Throwable.Exception

既然我们常常会遇到一些异常,那我们如何来处理这些异常就是一个急需解决的事情。

(1) 如何处理编译时异常?

方法一:将需要处理的代码块放在一个try...catch...中
try{
//需要处理异常的代码
}catch(XXXException ef){
ef.printStackTrace();
}

我们方法一就是要将我们不确定的代码放入try......catch中,先进行try一下,如果没有异常,则不会触发catch,没有输出,一旦出现异常,那么catch就会工作,在catch中捕获异常信息,根据异常信息进行补救措施。

如以下代码:

从结果可以看出,我们在输入数据的时候出现错误,这样通过自定义异常能够让我们更直接快速的找到运行或编译时的异常。

在上述中我们分别提到了三种throw,分别是Throwable,Throws以及throw,那么到底三者有什么区别?

Throwable:是指在在Java.lang包中的一个类,其包含了所有的异常和错误,其中类Error和Exception 是它

的子类。

Thows:是指在解决编译时异常,将方法中异常抛给上一级,在方法后面要加Throw Exception来进行抛。

throw:是指在自定义异常时,如果方法出现异常,那么将作为引用方法的对象抛出。即抛出异常。

希望对您有所帮助!~

㈣ C#编译出现错误怎么办

你应该把Program.cs 里面的static void Main(string[] args) 方法给修改了。

这个方法必须是static的,删除或者修改为非静态方法都会出现这个错误!

举个例子说明吧

编译错误:(编译器是通不过的)
如:int a = "a";

运行错误:(编译器可以通过)
如:int a = 5;
int b = 0;
int c = a/b;

而编译通过了,但是运行时错误,说明编程人员对代码的思想有错误,

简单的说就是"你说的话,人家听得懂,但是不明白你什么意识",语无伦次的

让对方不知道你想做什么,就运行时错误了.

㈤ 如何消除间接呼叫 Method 在 Android Studio 中的编译警告

如果有使用过 DI (Dependency Injection) Framework 像是 butterknife,或是 Bus 一类的 Framework 像是 Otto 或 EventBus,一定会撰写出 Method 是没有被自己开发的源代码直接呼叫的。这时在 Android Studio 的即时编译检查就会出现警告:

Method ‘...’ is never used

就像这篇文章里提到,警告的出现会形成一定程度上的困扰,最好是能够消除掉,毕竟这是一个无法避免的写法,但又不应该被看成是个问题。

照“调整 Android Studio 编译检查规则”中的方法把检查规则整个取消掉,是个一劳永逸的方法。但是也把其可能的错误也抑制掉了,徒增程序质量上的风险,并非上策。

另外一个可行的选项是在方法上宣告 SuppressWarnings 的 Annotation,像是 @SuppressWarnings("unused")、@SuppressWarnings({"UnusedDeclaration"})、@SuppressWarnings({"UnusedParameters”})。跟前一个方案一样,应该显示的警告也同时被遮蔽掉了,不是最佳的方式。

所幸 Android Studio 也不是没有提供对策,在有问题的源代码上按下“alt+enter”,会跳出 Menu 并可以选择 Suppress for methods annotated by ‘...’ 项目。以 greenrobot 的 EventBus 为例,所有以 org.greenrobot.eventbus.Subscribe 为 Annotation 的 Method 都不会再显示警告,所以问题顺利地解决了。

以上的解决方法应该已经很多人都知道了,只是还有一个衍生的问题。如果使用的 Framework 提供的 Annotation 不只一个,还是得要一个一个地重覆相同的动作,不能一次搞定吗?

这时可以开启“调整 Android Studio 编译检查规则”中提到的 Inspections 选项画面,切换到“Java->Declaration rendancy->Unused declaration”项目。画面右方的 Options Frame 最下方有一个【Configure annotations...】的按钮,点下去之后会再跳出另一个小视窗。接着就可以在视窗的最下方新增【Add Annotation Class】或【Add Annotations Pattern】,前一个是新增单一个 Class,另一个则是使用万用字符来增加一整组的 Class。

以上说明的这些资讯都被存在 .idea/misc.xml 的文件中,打开后会看到类似以下的内容:

<component name="EntryPointsManager">
<entry_points version="2.0" />
<list size="1">
<item index="0" class="java.lang.String" itemvalue="org.greenrobot.eventbus.Subscribe" />
</list>
</component>
如果你有莫名的控制欲,想要凡事都掌握在手中,可以直接修改文件的内容,也会达到一样的效果。

㈥ java Method invoke 抛出异常

InvocationTargetException异常由Method.invoke(obj, args...)方法抛出。当被调用的方法的内部抛出了异常而没有被捕获时,将由此异常接收。
示例:
package com.zzj.test.reflect;

public class Reflect {
public void run(int i) throws ZeroException {
B b = new B();
b.run(i);
}
}

class B {
public void run(int i) throws ZeroException {
if (i < 0) {
throw new ZeroException("参数不能小于零!");
}
System.out.println("参数:" + i);

}
}

class ZeroException extends Exception {
private static final long serialVersionUID = 1L;

private String detailMessage;

public ZeroException(String detailMessage) {
this.detailMessage = detailMessage;
}

public String getMessage() {
return detailMessage;
}
}
测试:
package com.zzj.test.reflect;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Test {
public static void main(String[] args) {
try {
Class<?> clazz = Class.forName("com.zzj.test.reflect.Reflect");
Method method = clazz.getMethod("run", int.class);
method.invoke(clazz.newInstance(), -1);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
System.out.println("此处接收被调用方法内部未被捕获的异常");
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
}
输出:
此处接收被调用方法内部未被捕获的异常
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.zzj.test.reflect.Test.main(Test.java:11)
Caused by: com.zzj.test.reflect.ZeroException: 参数不能小于零!
at com.zzj.test.reflect.B.run(Reflect.java:13)
at com.zzj.test.reflect.Reflect.run(Reflect.java:6)
... 5 more
也可以直接打印目标异常:
package com.zzj.test.reflect;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Test {
public static void main(String[] args) {
try {
Class<?> clazz = Class.forName("com.zzj.test.reflect.Reflect");
Method method = clazz.getMethod("run", int.class);
method.invoke(clazz.newInstance(), -1);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
System.out.println("此处接收被调用方法内部未被捕获的异常");
Throwable t = e.getTargetException();// 获取目标异常
t.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
}
输出:
此处接收被调用方法内部未被捕获的异常
com.zzj.test.reflect.ZeroException: 参数不能小于零!
at com.zzj.test.reflect.B.run(Reflect.java:13)
at com.zzj.test.reflect.Reflect.run(Reflect.java:6)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.zzj.test.reflect.Test.main(Test.java:11)

㈦ java报错提示The method xxx…是怎么回事

java1.5中继承接口是不需要@Override的,而在1.6中是需要添加@Override注解的,如果项目的编译器是1.5版本的就可能报错。

㈧ java中异常的处理方法有哪两种

1.检查型异常,这样的异常继承于Excetpion,就是在编译期间需要检查,如果该异常被throw,那么在该异常所在的method后必须显示的throws,调用该method的地方也必须捕获该异常,否则编译器会抛出异常.ejb里的RemoteException是一个这样的异常.来源:考试大

2.运行时异常,就是在运行期间系统出现的异常,该类异常继承于RuntimeException,该类异常在编译时系统不进行检查,如NullPointerExcetpion,NumberFormatException.

3.系统错误,一般是JVM出现异常时抛出的异常,如OutofMemoryError,这样的异常在J2EE开发中是不用关心的.考试大论坛
在J2EE开发中,检查型异常被滥用以至于过一段时间程序员自己都看不懂抛出这样的异常,.里面封装的这些错误信息是干什么用的,更可怕的是有好多有用的信息找不到了.比如SQLException和RemoteException这样的异常我们没必要再进行封装,这样的异常只对我们调试程序有用,而对客户来说它就是一个”系统错误”而已.异常处理有一个简单的原则,你什么时候需要封装自己的检查型异常?就是你很清楚自己抛出这个异常的用途时,比如用户输入用户名和密码要登录,但用户名和密码不匹配,你就要定义一个检查型异常,客户端通过捕获该异常,然后把相应的错误信息反馈给客户.而其它的自己未预期的错误或者异常比如SQLException,只需封装到EJBException中,ejb container会把它的信息追加到RemoteException里,这样客户端捕获RemoteException后把它写到系统日志里,就很容易进行调试。

Java 异常的处理
在 Java 应用程序中,对异常的处理有两种方式:处理异常和声明异常。
处理异常:try、catch 和 finally
若要捕获异常,则必须在代码中添加异常处理器块。这种 Java 结构可能包含 3 个部分,
都有 Java 关键字。下面的例子中使用了 try-catch-finally 代码结构。
import java.io.*; public class EchoInputTryCatchFinally { public static void main(String args[]){ System.out.println(”Enter text to echo:”); InputStreamReader isr = new InputStreamReader(System.in); BufferedReader inputReader = new BufferedReader(isr); try{ String inputLine = inputReader.readLine(); System.out.println(”Read:” + inputLine); } catch(IOException exc){ System.out.println(”Exception encountered: ” + exc); } finally{ System.out.println(”End. “); } } 其中:
try 块:将一个或者多个语句放入 try 时,则表示这些语句可能抛出异常。编译器知道可能要发生异常,于是用一个特殊结构评估块内所有语句。
catch 块:当问题出现时,一种选择是定义代码块来处理问题,catch 块的目的便在于此。catch 块是 try 块所产生异常的接收者。基本原理是:一旦生成异常,则 try 块的执行中止,JVM 将查找相应的 JVM。
finally 块:还可以定义 finally 块,无论运行 try 块代码的结果如何,该块里面的代码一定运行。在常见的所有环境中,finally 块都将运行。无论 try 块是否运行完,无论是否产生异常,也无论是否在 catch 块中得到处理,finally 块都将执行。
try-catch-finally 规则:
必须在 try 之后添加 catch 或 finally 块。try 块后可同时接 catch 和 finally 块,但至少有一个块。
必须遵循块顺序:若代码同时使用 catch 和 finally 块,则必须将 catch 块放在 try 块之后。
catch 块与相应的异常类的类型相关。
一个 try 块可能有多个 catch 块。若如此,则执行第一个匹配块。
可嵌套 try-catch-finally 结构。
在 try-catch-finally 结构中,可重新抛出异常。
除了下列情况,总将执行 finally 做为结束:JVM 过早终止(调用 System.exit(int));在 finally 块中抛出一个未处理的异常;计算机断电、失火、或遭遇病毒攻击。
声明异常
若要声明异常,则必须将其添加到方法签名块的结束位置。下面是一个实例:
public void errorProneMethod(int input) throws java.io.IOException { //Code for the method,including one or more method //calls that may proce an IOException } 这样,声明的异常将传给方法调用者,而且也通知了编译器:该方法的任何调用者必须遵守处理或声明规则。声明异常的规则如下:
必须声明方法可抛出的任何可检测异常(checked exception)。
非检测性异常(unchecked exception)不是必须的,可声明,也可不声明。
调用方法必须遵循任何可检测异常的处理和声明规则。若覆盖一个方法,则不能声明与覆盖方法不同的异常。声明的任何异常必须是被覆盖方法所声明异常的同类或子类。

阅读全文

与method编译时异常怎么处理相关的资料

热点内容
macd从入门到精通pdf 浏览:865
程序员回北京老家 浏览:323
藏族pdf 浏览:655
矩形密封圈压缩量 浏览:591
电脑设置ntp时间同步服务器地址 浏览:18
怎么更有效招聘对日程序员 浏览:147
命令号角 浏览:275
格力双转子压缩机 浏览:612
hp服务器上的ip地址 浏览:560
c语言编程计算100以内的所有素数 浏览:624
命令输入框 浏览:892
冰箱压缩机发烫噪音 浏览:85
单片机栈溢出符号 浏览:330
命令与征服修改器怎么用 浏览:485
什么app比较费钱 浏览:832
为什么同一个app的功能不一样 浏览:232
小型工作室用什么服务器好 浏览:995
程序员的兴趣 浏览:413
华为服务器有什么好 浏览:701
程序员和测试之间的关系 浏览:945