Java 异常类总结

图片 3

本文由码农网 –
小峰原创翻译,转发请看清文末的转发供给,接待出席大家的付费投稿铺排!

图片 1

Java相当定义:

接上文伍15个听而不闻的 Java
错误及防止方法(第3局地)

在上一篇小说中,我们介绍了20种多如牛毛的编写翻译器错误,并就什么样防止那几个错误做了认证。未来,大家将重要转移(纵然不只是注意于某一块),来商量一下运营时十三分以致产生这几个非凡的原因。接下来大家将聊聊30种家常便饭的不行和错误,何况告诉你哪些在代码中化解那几个标题。21.“ArrayIndexOutOfBoundsException”那是代码在品味访谈不在数组的目录取值范围内的成分时会展现的运维时不当音讯。如下所示的代码会触发此万分:

在Java语言中,将程序实行中生出的不健康景况称为“万分”,分外是前后相继中的一些破绽超级多,但并非具备的不当都以特别,并且错误有时候是足避防止的

31.“Could Not Create Java Virtual Machine”

当大家品尝调用带有错误参数的Java代码时,通常会发出此Java错误新闻(@ghacksnews):

Error: Could not create the Java Virtual Machine
Error: A fatal exception has occurred. Program will exit.

那日常是出于代码中的申明存在错误或为其分配适当的内部存储器而孳生的。

读书有关什么修复Java软件错误“Could Not Create Java Virtual
Machine”的商量。(@StackOverflow)

String[] name = { "tom", "dick", "harry"};for (int i = 0; i = name.length; i++) { System.out.print(name[i] + 'n');}

Java格外的档期的顺序布局:

32.“class file contains wrong class”

当Java代码尝试在错误的目录中搜寻类公事时,就能情不自禁“class file contains
wrong class”的难题,招致相似于以下内容的失实音讯:

MyTest.java:10: cannot access MyStruct 
bad class file: D:JavatestMyStruct.java 
file does not contain class MyStruct 
Please remove or make sure it appears in the correct subdirectory of the classpath. 
MyStruct ms = new MyStruct();

要修复此错误,以下这几个提醒能够提供扶持:

  • 确定保证源文件的称呼和类的称呼相配——包蕴大小写。
  • 反省软件包语句是还是不是精确或是或不是贫乏。
  • 确定保障源文件位叶昭君确的目录中。

读书此有关什么样修复“class file contains wrong
class”错误的研商。(@StackOverflow)

如下是其它一个例子 (@DukeU卡塔尔国:

图片 2

33.“ClassCastException”

“ClassCastException”音讯提示了Java代码正在尝试将指标转换为错误的类。在源点Java
Concept of Day的这么些例子中,运维以下顺序:

package com;
class A
{
    int i = 10;
}
class B extends A
{
    int j = 20;
}
class C extends B
{
    int k = 30;
}
public class ClassCastExceptionDemo
{
    public static void main(String[] args)
    {
        A a = new B();   //B type is auto up casted to A type
        B b = (B) a;     //A type is explicitly down casted to B type.
        C c = (C) b;    //Here, you will get class cast exception
        System.out.println(c.k);
    }
}

招致以下错误:

Exception in thread “main” java.lang.ClassCastException: com.B cannot be cast to com.C
at com.ClassCastExceptionDemo.main(ClassCastExceptionDemo.java:23)

Java代码将创制三个类和子类的等级次序布局。为了制止“ClassCastException”错误,请保管新类型属李碧华确的类或其父类之一。即使采用泛型,则编写翻译代码时也许会捕获那个错误。

翻阅此教程以理解怎么修复“ClassCastException”的Java软件错误。(@java_concept)

int[] list = new int[5];list[5] = 33; // illegal index, maximum index is 4

java.lang.Error

34.“ClassFormatError”

“ClassFormatError”音讯提醒链接错误,並且发生在类文件不可能被读取或表达为类公事的时候。

Caused by: java.lang.ClassFormatError: Absent Code attribute in method that is
        not native or abstract in class file javax/persistence/GenerationType
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)

有许多缘由会促成“ClassFormatError”错误:

  • 类公事以ASCII方式而不是二进制格局上传。
  • Web服务器必得以二进制实际不是ASCII格式发送类公事。
  • 也许会有多少个类路径错误,阻止了代码找到类公事。
  • 一旦类被加载三遍,那么第二次将以致抛出分外。
  • 正值利用旧版本的Java运营时。

开卷此有关招致Java“ClassFormatError”错误的原故的切磋。(@StackOverflow)

数组的目录是从零从头的,并且比数老总度小了1。经常,在定义数组索引的界依期,要利用“”实际不是“=”。能够看看那么些例子,索引是怎么样触发“ArrayIndexOutOfBoundsException”的。
(@StackOverflow卡塔尔22.“StringIndexOutOfBoundsException”现代码尝试访谈字符串中不在字符串范围内的字符串片段时,就能冒出此主题材料。这种情状习感觉常会暴发在代码尝试成立贰个字符串的子字符串,不过传入的参数值不符合字符串长度限定的时候。如下正是那类难题的一个例子
(@javacodegeeks卡塔尔:

Direct Known Subclasses:

35.“ClassNotFoundException”

“ClassNotFoundException”仅在运行时爆发——意味着在编写翻译时期有三个类在运营时缺点和失误了。那是三个链接错误。

图片 3

很像“NoClassDefFoundError”,在以下情状下会产出那些主题材料:

  • 该文件不在正确的目录中。
  • 类的称号必需与公事的称呼相符(不包罗文件增添名)。 名称区分朗朗上口写。

读书此有关引致“ClassNotFoundException”原因的更加多案例的商量。(@StackOverflow)。

public class StringCharAtExample { public static void main(String[] args) { String str = "Java Code Geeks!"; System.out.println("Length: " + str.length()); //The following statement throws an exception, because //the request index is invalid. char ch = str.charAt(50); }}

AnnotationFormatError, AssertionError, AWTError, CoderMalfunctionError,
FactoryConfigurationError, FactoryConfigurationError, IOError,
LinkageError, ServiceConfigurationError, ThreadDeath,
TransformerFactoryConfigurationError, VirtualMachineError等

36.“ExceptionInInitializerError”

此Java难题发出在静态发轫化出错的时候(@GitHub)。
当Java代码稍后使用该类时,将生出“NoClassDefFoundError”错误。

java.lang.ExceptionInInitializerError
  at org.eclipse.mat.hprof.HprofIndexBuilder.fill(HprofIndexBuilder.java:54)
  at org.eclipse.mat.parser.internal.SnapshotFactory.parse(SnapshotFactory.java:193)
  at org.eclipse.mat.parser.internal.SnapshotFactory.openSnapshot(SnapshotFactory.java:106)
  at com.squareup.leakcanary.HeapAnalyzer.openSnapshot(HeapAnalyzer.java:134)
  at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:87)
  at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:56)
  at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:145)
  at android.os.HandlerThread.run(HandlerThread.java:61)
Caused by: java.lang.NullPointerException: in == null
  at java.util.Properties.load(Properties.java:246)
  at org.eclipse.mat.util.MessageUtil.(MessageUtil.java:28)
  at org.eclipse.mat.util.MessageUtil.(MessageUtil.java:13)
  ... 10 more

修复此错误我们须要越多的音讯。在代码中应用getCause(State of Qatar能够回来引致错误的老大。

阅读此有关哪些追踪ExceptionInInitializerError原因的商量。(@StackOverflow)

像数组的目录雷同,字符串的目录是从零起始的。索引字符串时,最后一个字符的索引值比字符串的尺寸小1。
“StringIndexOutOfBoundsException”这几个不明是非消息日常都意味着索引正在品尝访谈空头支票于字符串中的字符。这里有叁个表明了“StringIndexOutOfBoundsException”是怎么发生还恐怕有哪些去修补的例证。(@StackOverflow卡塔尔(قطر‎23.“NullPointerException”当程序尝试接收没有通过赋值的靶子援引时,就能够生出“NullPointerException”。(@geeksforgeeks卡塔尔国.

 

37.“IllegalBlockSizeException”

当长度新闻不是8字节的倍数时,那么在解密时期就能够抛出“IllegalBlockSizeException”非常。以下是一个来自ProgramCreek.com的示例(@ProgramCreek):

@Override
protected byte[] engineWrap(Key key) throws IllegalBlockSizeException, InvalidKeyException {
    try {
        byte[] encoded = key.getEncoded();
        return engineDoFinal(encoded, 0, encoded.length);
    } catch (BadPaddingException e) {
        IllegalBlockSizeException newE = new IllegalBlockSizeException();
        newE.initCause(e);
        throw newE;
    }
}

“IllegalBlockSizeException”大概是由以下原因引起的:

  • 行使分裂的加密和平解决密算法选项。
  • 要解密的消息只怕在传输中被截断或乱码。

翻阅有关如何防止IllegalBlockSizeException
Java软件错误音讯的座谈。(@StackOverflow)

// A Java program to demonstrate that invoking a method// on null causes NullPointerExceptionimport java.io.*;class GFG{ public static void main (String[] args) { // Initializing String variable with null value String ptr = null; // Checking if ptr.equals null or works fine. try { // This line of code throws NullPointerException // because ptr is null if (ptr.equals("gfg")) System.out.print("Same"); else System.out.print("Not Same"); } catch(NullPointerException e) { System.out.print("NullPointerException Caught"); } }}

java.lang.RuntimeException

38.“BadPaddingException”

当使用填充来创设三个消息并非8字节的倍数时,那么在解密时期大概会现身“BadPaddingException”相当。那是根源Stack
Overflow的一个例证(@StackOverflow):

javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)

加密数码是二进制的,所以并不是尝试将其储存在字符串或在加密里头从不被科学填写的数量中。

开卷有关哪些防范BadPaddingException的座谈。(@StackOverflow)

Java
程序通常现身如下情况:语句引用叁个值为空的靶子。尝试去访问已经定义不过还不曾分配过引用的类。这里就开拓人士恐怕会在怎么时候碰着“NullPointerException”以至如哪里理它,进行了斟酌。(@StackOverflowState of Qatar24.“NoClassDefFoundError”“NoClassDefFoundError”会发生在解释器找不到在主方法使用到了的类的文本的时候。如下是DZone的示例
(@DZone卡塔尔(قطر‎:假若你对如下程序实践编写翻译:

Direct Known Subclasses:

39.“IncompatibleClassChangeError”

“IncompatibleClassChangeError”是LinkageError的一种样式,假诺叁个在基类在编写翻译子类之后发生变化,那么就能够现出此特别。下边这几个例子来自于How
to Do in
Java(@HowToDoInJava):

Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at net.sf.cglib.core.DebuggingClassWriter.toByteArray(DebuggingClassWriter.java:73)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:26)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
at net.sf.cglib.proxy.Enhancer.(Enhancer.java:69)

出现“IncompatibleClassChangeError”有希望的由来是:

  • 忘记了主方法的静态。
  • 不法利用了legal类。
  • 类被改良了,并且设有通过旧的签名从另叁个类到这一个类的援引。尝试删除全体类公事并再一次编写翻译全部剧情。

品尝消除“IncompatibleClassChangeError”的那么些步骤(@javacodegeeks)

class A{ // some code}public class B{ public static void main(String[] args) { A a = new A(); }}

ArithmeticException, ArrayStoreException, BufferOverflowException,
BufferUnderflowException,  ClassCastException, DataBindingException,
DOMException, EmptyStackException, EnumConstantNotPresentException,
EventException, FileSystemAlreadyExistsException,
FileSystemNotFoundException,
IllegalArgumentException,IllegalPathStateException,
IllegalStateException, IllformedLocaleException, ImagingOpException,
IncompleteAnnotationException, IndexOutOfBoundsException,
JMRuntimeException,  MissingResourceException,
NegativeArraySizeException, NoSuchElementException,NullPointerException,
ProfileDataException, ProviderException, ProviderNotFoundException, 
RejectedExecutionException, SecurityException, SystemException,
TypeConstraintException, TypeNotPresentException,
UndeclaredThrowableException, UnknownEntityException,
UnmodifiableSetException, UnsupportedOperationException,
WebServiceException, WrongMethodTypeException等

40.“FileNotFoundException”

当全部钦赐路线名的文书不真实时,将抛出此Java软件错误新闻。

@Override public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
    if (uri.toString().startsWith(FILE_PROVIDER_PREFIX)) {
        int m = ParcelFileDescriptor.MODE_READ_ONLY;
        if (mode.equalsIgnoreCase("rw")) m = ParcelFileDescriptor.MODE_READ_WRITE;
        File f = new File(uri.getPath());
        ParcelFileDescriptor pfd = ParcelFileDescriptor.open(f, m);
        return pfd;
    } else {
        throw new FileNotFoundException("Unsupported uri: " + uri.toString());
    }
}

除此之外未有一点名路线名的文书之外,那也许代表现成文件不恐怕访谈。

读书有关怎么会抛出“FileNotFoundException”的座谈。(@StackOverflow)

它会变卦两个 .class 文件:A.class 和 B.class。删除 A.class 文件同时运维B.class 文件,就能获得 NoClassDefFoundError 错误音讯:

 

41.“EOFException”

当输入期间意外终止文件或流时,将抛出“EOFException”。
以下是抛出EOFException极度的三个示范,来自JavaBeat应用程序:

import java.io.DataInputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ExceptionExample {
    public void testMethod1() {
        File file = new File("test.txt");
        DataInputStream dataInputStream = null;
        try {
            dataInputStream = new DataInputStream(new FileInputStream(file));
            while (true) {
                dataInputStream.readInt();
            }
        } catch (EOFException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (dataInputStream != null) {
                    dataInputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args) {
        ExceptionExample instance1 = new ExceptionExample();
        instance1.testMethod1();
    }
}

运作方面的程序,将抛出以下相当:

java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:392)
at logging.simple.ExceptionExample.testMethod1(ExceptionExample.java:16)
at logging.simple.ExceptionExample.main(ExceptionExample.java:36)

当DataInputStream类尝试在流中读取数据但未曾越来越比比较多据时,将抛出“EOFException”。它也足以发生在ObjectInputStream和RandomAccessFile类中。

开卷有关运维Java软件时只怕产生“EOFException”的商量。(@StackOverflow)

Exception in thread "main" java.lang.NoClassDefFoundError: Aat MainClass.main(MainClass.java:10)Caused by: java.lang.ClassNotFoundException: Aat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

从概略上来分非凡为两块:

42.“UnsupportedEncodingException”

当不扶植字符编码时,会抛出此Java软件错误音信(@Penn)。

public UnsupportedEncodingException()

正在利用的Java虚构机恐怕不扶持加以的字符集。

开卷有关怎么着在运作Java软件时处理“UnsupportedEncodingException”相当的商量。(@StackOverflow)

若果存在如下难题,就能生出这么的标题:该公文不在正确的目录。类的称号必需与公事的称呼相符,且名称是分别朗朗上口写的。你能够读一读这里关于为何会在运维Java
软件时发生“NoClassDefFoundError”的商量。(@StackOverflow卡塔尔25.“NoSuchMethodFoundError”
Java
软件尝试调用类的措施而该方式在类里面没有概念时,就能够现身这么的错误消息(@myUND卡塔尔(قطر‎:

  1. error—错误 :
    是指程序不能管理的大谬不然,表示应用程序运转时出现的主要失实。比如jvm运转时现身的OutOfMemoryError以至Socket编制程序时现身的端口占用等程序不大概管理的荒谬。

  2. Exception — 非常 :相当可分为运转时极其跟编写翻译十分

  3. 检查性十分: 不管理编写翻译不可能透过

  4. 非检查性至极:不管理编写翻译能够透过,若是有抛出直接抛到调控台

  5. 运作时极其: 就是非检查性分外

  6. 非运维时十三分: 就是检查性分外

43.“SocketException”

“SocketException”分外表示创制或访谈套接字时出错(@ProgramCreek)。

public void init(String contextName, ContextFactory factory) {
    super.init(contextName, factory);
    String periodStr = getAttribute(PERIOD_PROPERTY);
    if (periodStr != null) {
        int period = 0;
        try {
            period = Integer.parseInt(periodStr);
        } catch (NumberFormatException nfe) {}
        if (period <= 0) {
            throw new MetricsException("Invalid period: " + periodStr);
        }
        setPeriod(period);
    }
    metricsServers =
        Util.parse(getAttribute(SERVERS_PROPERTY), DEFAULT_PORT);
    unitsTable = getAttributeTable(UNITS_PROPERTY);
    slopeTable = getAttributeTable(SLOPE_PROPERTY);
    tmaxTable = getAttributeTable(TMAX_PROPERTY);
    dmaxTable = getAttributeTable(DMAX_PROPERTY);
    try {
        datagramSocket = new DatagramSocket();
    } catch (SocketException se) {
        se.printStackTrace();
    }
}

当由于以下原由此完毕最都林接时,平时会抛出此特别:

  • 尚未更加多的互联网端口可用于应用程序。
  • 系统没有丰盛的内部存款和储蓄器来支撑新的连天。

阅读有关怎么样在运作Java软件时死灭“SocketException”难题的评论。(@StackOverflow)

Error: Could not find or load main class wiki.java

拾分和错误的不一致:非凡能被前后相继本人能够拍卖,错误是力不能支管理。

44.“SSLException”

此Java软件错误音信发生在与SSL相关的操作现身故障的时候。
以下示例来自Atlassian(@Atlassian):

com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
   at com.sun.jersey.client.apache.ApacheHttpClientHandler.handle(ApacheHttpClientHandler.java:202)
   at com.sun.jersey.api.client.Client.handle(Client.java:365)
   at com.sun.jersey.api.client.WebResource.handle(WebResource.java:556)
   at com.sun.jersey.api.client.WebResource.get(WebResource.java:178)
   at com.atlassian.plugins.client.service.product.ProductServiceClientImpl.getProductVersionsAfterVersion(ProductServiceClientImpl.java:82)
   at com.atlassian.upm.pac.PacClientImpl.getProductUpgrades(PacClientImpl.java:111)
   at com.atlassian.upm.rest.resources.ProductUpgradesResource.get(ProductUpgradesResource.java:39)
   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.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:206)
   at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:90)
   at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61)
   at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept(ExpandInterceptor.java:38)
   at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61)
   at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors(DispatchProviderHelper.java:98)
   at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.access$100(DispatchProviderHelper.java:28)
   at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:202)
   ...
Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
   ...
Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
   ...
Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

产生这种气象的来头有:

  • 服务器或客商端上的证书已过期。
  • 服务器端口已重新恢复生机设置为另多少个端口。

读书有关恐怕导致Java软件“SSLException”错误的座谈。(@StackOverflow)

当声明中有错别字的时候,常常就能并发“NoSuchMethodFoundError”那样的荒唐。阅读这里的科目能够掌握什么幸免NoSuchMethodFoundError 错误。 (@javacodegeeks卡塔尔(قطر‎26.
“NoSuchProviderException”
当号召了三个不可用的安全方案提供方的时候,就能引发“NoSuchProviderException”
(@alvinalexander卡塔尔国:

 

45.“MissingResourceException”

当财富遗失时,会时有发生“MissingResourceException”万分。若是财富在准确的类路径中,那么平时是因为属性文件未有精确配置。上边有贰个例子(@TIBCO):

java.util.MissingResourceException: Can't find bundle for base name localemsgs_en_US, locale en_US
java.util.ResourceBundle.throwMissingResourceException
java.util.ResourceBundle.getBundleImpl
java.util.ResourceBundle.getBundle
net.sf.jasperreports.engine.util.JRResourcesUtil.loadResourceBundle
net.sf.jasperreports.engine.util.JRResourcesUtil.loadResourceBundle

读书有关什么样在运营Java软件时修复“MissingResourceException”的座谈。

javax.mail.NoSuchProviderException

相近至极统计:

46.“NoInitialContextException”

当Java应用程序想要推行命名操作但无计可施创立连接时,会时有发生“NoInitialContextException”非常(@TheASF)。

[java] Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
[java]     at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
[java]     at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
[java]     at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
[java]     at javax.naming.InitialContext.lookup(InitialContext.java:351)
[java]     at org.apache.camel.impl.JndiRegistry.lookup(JndiRegistry.java:51)

那消除起来可能会是二个目眩神摇的标题,但此处有一点可能形成“NoInitialContextException”Java错误新闻的缘故:

  • 应用程序只怕没有科学的证据举办连接。
  • 代码恐怕无法甄别所需的JNDI达成。
  • InitialContext类或许未有配备不错的性质。

阅读有关运维Java软件时“NoInitialContextException”意味什么的座谈。(@StackOverflow)

倘若您在品尝寻找“NoSuchProviderException”为啥会产生的来头,请实行如下检查:JRE
配置。配置中的 Java 主目录配置。使用的哪个 Java
情状。安全方案提供方选项。你能够读一下那边关于导致“NoSuchProviderException”的原故的座谈。(@StackOverflow卡塔尔国27.
AccessControlException
AccessControlException
表示央浼采访的系统财富被驳回了,举个例子本例中的 JBossDeveloper
(@jbossdeveloper卡塔尔国:

非检查性格外(RuntimeException):

47.“NoSuchElementException”

当迭代(比方“for”循环)尝试访谈下二个成分而从不成分的时候,就能冒出“NoSuchElementException”非凡。

public class NoSuchElementExceptionDemo{
    public static void main(String args[]) {
        Hashtable sampleMap = new Hashtable();
        Enumeration enumeration = sampleMap.elements();
        enumeration.nextElement();  //java.util.NoSuchElementExcepiton here because enumeration is empty
    }
}
Output:
Exception in thread "main" java.util.NoSuchElementException: Hashtable Enumerator
        at java.util.Hashtable$EmptyEnumerator.nextElement(Hashtable.java:1084)
        at test.ExceptionTest.main(NoSuchElementExceptionDemo.java:23)

抛出“NoSuchElementException”只怕的门道:

  • Enumeration:: nextElement()
  • NamingEnumeration::next()
  • StringTokenizer:: nextElement()
  • Iterator::next()

开卷此有关怎么在Java软件中期维修复“NoSuchElementException”的课程。(@javinpaul)

ERROR Could not register mbeans java.security.AccessControlException: WFSM000001: Permission check failed (permission "("javax.management.MBeanPermission" "org.apache.logging.log4j.core.jmx.LoggerContextAdmin#-[org.apache.logging.log4j2:type=51634f]" "registerMBean")" in code source "(vfs:/C:/wildfly-10.0.0.Final/standalone/deployments/mySampleSecurityApp.war/WEB-INF/lib/log4j-core-2.5.jar )" of "null")

java.lang.阿RitterhmeticException,数学生运动算非凡,当现身至极的演算条件时,抛出此特别

48.“NoSuchFieldError”

当应用程序尝试访问对象中的八个字段,但钦定的字段不再存在于对象中时,将抛出此Java软件错误消息(@sourceforge)。

public NoSuchFieldError()

常常,该错误在编译器中被擒获,可是若是在编写翻译和平运动转时期更动了类定义,则在运行时将被破获。

阅读此有关哪些在运作Java软件时意识怎么引致“NoSuchFieldError”的商议。(@StackOverflow)

能够读一读这里那篇关于化解“AccessControlException”错误的商量。
(@github卡塔尔(قطر‎28. “ArrayStoreException”“ArrayStoreException”会发生在向
Java 的数组中改造到分受到调换准绳约束而发生搁浅的时候。比方,那一个源于于
JavaScan.com 的这几个事例就表现了爆发这种难点的程序 (@java_scan):

java.lang.ArrayStoreException,数组存款和储蓄至极

49.“NumberFormatException”

当应用程序尝试将字符串转变为数字类型,但该数字不是行之有效的数字字符串时,会并发此Java软件错误消息(@alvinalexander)。

package com.devdaily.javasamples;
public class ConvertStringToNumber {
    public static void main(String[] args) {
        try {
            String s = "FOOBAR";
            int i = Integer.parseInt(s);
            // this line of code will never be reached
            System.out.println("int value = " + i);
        }
        catch (NumberFormatException nfe) {
            nfe.printStackTrace();
        }
    }
}

只怕抛出“NumberFormatException”的从头到尾的经过有:

  • 数字中的前导或尾随空格。
  • 申明不在数字后面。
  • 数字有逗号。
  • 本地化恐怕不会将其分类为使得数字。
  • 数字太大,不切合数字类型。

读书有关什么样在运作Java软件时制止“NumberFormatException”的座谈。(@StackOverflow)。

 /* ............... START ............... */ public class JavaArrayStoreException { public static void main(String...args) { Object[] val = new Integer[4]; val[0] = 5.8; } } /* ............... END ............... */

java.lang.IllegalArgumentException,方法的参数错误

50.“TimeoutException”

当窒碍操作超时时,会冒出此Java软件错误音信。

private void queueObject(ComplexDataObject obj) throws TimeoutException, InterruptedException {
    if (!queue.offer(obj, 10, TimeUnit.SECONDS)) {
        TimeoutException ex = new TimeoutException("Timed out waiting for parsed elements to be processed. Aborting.");
        throw ex;
    }
}

阅读此有关怎样在运维Java软件时管理“TimeoutException”的切磋。(@StackOverflow)。

出口结果如下:

java.lang.ClassCastException,类型转变极度,当试图将指标强逼转变为不是实例的子类时,抛出该极度

结论

到那边就满门告终了!
倘让你细细阅读了整篇小说,那么相信以往您应当能管理各类运转时和编写翻译器的大谬不然和丰硕了。编制程序开心!

前边两篇链接:

肆拾多少个周围的 Java
错误及防止格局(第一片段)

伍十七个广大的 Java
错误及制止情势(第一局地)

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Doubleat ExceptionHandling.JavaArrayStoreException.main(JavaArrayStoreException.java:7)

java.lang.IndexOutOfBoundsException,数组下标越界万分,具体分:java.lang.ArrayIndexOutOfBoundsException、java.lang.StringIndexOutOfBoundsException

数组在被早先化的时候,须求注脚允许步入数组的指标的门类。由此数组的种种成分都得是一致档案的次序的靶子。能够读一读这里关于如何消除“ArrayStoreException”难题的研商(@StackOverflow卡塔尔国29. “Bad Magic
Number”
本条以白为黑音讯的意思是网络上的类定义文件大概出标题了。如下是服务器端的错误消息示例(@TSS_dotcom):

java.lang.NullPointerException,空指针格外,调用了未经初阶化的靶子或然是不设有的对象

Java(TM) Plug-in: Version 1.3.1_01Using JRE version 1.3.1_01 Java HotSpot(TM) Client VMUser home directory = C:Documents and SettingsAnkurProxy Configuration: Manual ConfigurationProxy: 192.168.11.6:80java.lang.ClassFormatError: SalesCalculatorAppletBeanInfo (Bad magic number)at java.lang.ClassLoader.defineClass0(Native Method)at java.lang.ClassLoader.defineClass(Unknown Source)at java.security.SecureClassLoader.defineClass(Unknown Source)at sun.applet.AppletClassLoader.findClass(Unknown Source)at sun.plugin.security.PluginClassLoader.access$201(Unknown Source)at sun.plugin.security.PluginClassLoader$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at sun.plugin.security.PluginClassLoader.findClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at sun.applet.AppletClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at java.beans.Introspector.instantiate(Unknown Source)at java.beans.Introspector.findInformant(Unknown Source)at java.beans.Introspector.(Unknown Source)at java.beans.Introspector.getBeanInfo(Unknown Source)at sun.beans.ole.OleBeanInfo.(Unknown Source)at sun.beans.ole.StubInformation.getStub(Unknown Source)at sun.plugin.ocx.TypeLibManager$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at sun.plugin.ocx.TypeLibManager.getTypeLib(Unknown Source)at sun.plugin.ocx.TypeLibManager.getTypeLib(Unknown Source)at sun.plugin.ocx.ActiveXAppletViewer.statusNotification(Native Method)at sun.plugin.ocx.ActiveXAppletViewer.notifyStatus(Unknown Source)at sun.plugin.ocx.ActiveXAppletViewer.showAppletStatus(Unknown Source)at sun.applet.AppletPanel.run(Unknown Source)at java.lang.Thread.run(Unknown Source)

java.lang.NumberFormatException,字符串转变为数字相当

“bad magic
number”错误音讯产生时,恐怕存在如下那个景况:类公事的前几个字节不是十二进制数字
CAFEBABE。类公事是以 ASCII 形式并非二进制情势上传的。Java
程序是在编写翻译在此之前运营的。能够读一读这里关于怎么着找到“bad magic
number”的发生原因的商量。 (@coderanch卡塔尔(قطر‎30. “Broken Pipe”
那样的荒谬消息表示来自于文件或网络套接字的数据流已消声匿迹专门的工作或在另一端已经处在关闭状态
(@ExpertsExchangeState of Qatar。

 

Exception in thread "main" java.net.SocketException: Broken pipe at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:115) at java.io.DataOutputStream.write

检查性十分类:

多少管道中断发生的由来日常满含如下那个磁盘的暂存空间已经耗尽。RAM大概被窒碍了。数据流恐怕曾经毁损了。读取管道的历程大概早已关门了。能够读一读这里那篇有关如何是“broken
pipe”错误的探究。 (@StackOverflow卡塔尔(قطر‎31. “Could Not Create Java Virtual
Machine”
当 Java 代码尝试选取不当的参数来运行 Java
时,日常会发生这么的荒唐新闻 (@ghacksnews卡塔尔(قطر‎:

java.io.IOException,IO流异常

Error: Could not create the Java Virtual MachineError: A fatal exception has occurred. Program will exit.

java.lang.ClassNotFoundException,类未找到分外

它日常是由于代码中的申明中要么为其分配适当的内存时有错误而引起的。能够读一读这里关于什么修复“Could
not create Java Virtual Machine”错误的座谈。(@StackOverflow卡塔尔32. “class
file contains wrong class”
“class file contains wrong
class”难点一般会产生在 Java
代码尝试在错误的目录中搜索类公事的时候,产生相似于如下所示的大错特错消息:

java.lang.IllegalAccessException,没有访谈权限,谢绝访谈二个类的时候,抛出该非常

MyTest.java:10: cannot access MyStructbad class file: D:JavatestMyStruct.javafile does not contain class MyStructPlease remove or make sure it appears in the correct subdirectory of the classpath.MyStruct ms = new MyStruct();^

java.lang.NoSuchMethodException,方法空中楼阁极度

要修复此难点,如下提醒能够提供一些救助:确认保证源文件的称呼和类的称呼相称——满含大小写。检查包的证实语句是还是不是准确可能贫乏。确定保障源文件位孙铎确的目录。能够读一读这里关于如何修复“类公事包罗错误类”错误的商量。
(@StackOverflow卡塔尔33. “ClassCastException”“ClassCastException”
音讯表示 Java 代码正尝试将指标调换来一个谬误的种类。在下边那个来自于
Java 概念日有所进的实例中, 运营着那样的次序:

java.lang.NoSuchFiledException,属性不设有极度

package com;class A{ int i = 10;}class B extends A{ int j = 20;}class C extends B{ int k = 30;}public class ClassCastExceptionDemo{ public static void main(String[] args) { A a = new B(); //B type is auto up casted to A type B b = (B) a; //A type is explicitly down casted to B type. C c = (C) b; //Here, you will get class cast exception System.out.println(c.k); }}

java.lang.EOFException,文件已终止相当,当程序在输入的经过中蒙受文件或流的终极时,引发这么些

那会招致如下错误:

 

Exception in thread “main” java.lang.ClassCastException: com.B cannot be cast to com.Cat com.ClassCastExceptionDemo.main(ClassCastExceptionDemo.java:23)

Java 代码会创设二个类和子类的层级构造。为了制止 “ClassCastException”
错误,请确认保障新的品类归于张静确的类依然它的父类。借使使用了泛型的话,那些不当就足以在编写翻译时被捕获到。能够读一读这篇关于怎么着修复
“ClassCastException” 错误的教程。 (@java_concept)34.
“ClassFormatError”
“ClassFormatError”
消息指代的是多少个链接错误,爆发在一个类公事无法被读取大概解释为二个类公事的时候。

Caused by: java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/persistence/GenerationTypeat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClassCond(Unknown Source)at java.lang.ClassLoader.defineClass(Unknown Source)at java.security.SecureClassLoader.defineClass(Unknown Source)at java.net.URLClassLoader.defineClass(Unknown Source)at java.net.URLClassLoader.access$000(Unknown Source)at java.net.URLClassLoader$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)

至于“ClassFormatError”错误为啥会发生,有二种只怕:类公事是以 ASCII
方式并非二进制格局来上传的。网页服务器是以二进制而非 ASCII
来发送类公事的。只怕有类路线错误阻止了代码找到类公事。假诺类被加载了三回,第叁回就能够产生那个极度被抛出来。使用了二个老版本的
Java 运维时。能够读一读这里关于什么会抓住“ClassFormatError”的座谈。
(@StackOverflow卡塔尔35. “ClassNotFoundException”“ClassNotFoundException”
只会发出于运作时——意味着本存在于编写翻译时但是在运作时却不胫而走了。那是叁个链接错误。特别周边于
“NoClassDefFoundError”,如下情形就有望让这么的难点发出:文件不在精确的目录。类的称号必需跟文件的称号保持一致。名称对大小写是敏感的。能够读一读这里关于怎么着会招致“ClassNotFoundException“发生的商议,以询问越多情状(@StackOverflowState of Qatar.36. “ExceptionInInitializerError”这么些 Java
问题会在静态发轫化反常时发生 (@GitHub卡塔尔。当 Java
代码稍后要用到那个类时, 将会生出“NoClassDefFoundError” 错误.

java.lang.ExceptionInInitializerError at org.eclipse.mat.hprof.HprofIndexBuilder.fill(HprofIndexBuilder.java:54) at org.eclipse.mat.parser.internal.SnapshotFactory.parse(SnapshotFactory.java:193) at org.eclipse.mat.parser.internal.SnapshotFactory.openSnapshot(SnapshotFactory.java:106) at com.squareup.leakcanary.HeapAnalyzer.openSnapshot(HeapAnalyzer.java:134) at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:87) at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:56) at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.os.HandlerThread.run(HandlerThread.java:61)Caused by: java.lang.NullPointerException: in == null at java.util.Properties.load(Properties.java:246) at org.eclipse.mat.util.MessageUtil.(MessageUtil.java:28) at org.eclipse.mat.util.MessageUtil.(MessageUtil.java:13) ... 10 more

要修复此难题还索要更加多的新闻。在代码中使用 getCause(State of Qatar能够回来以致被再次回到的荒诞发生的极度对象。能够读一读这里关于什么跟踪ExceptionInInitializerError 的发出原因的评论。 (@StackOverflow卡塔尔国37.
“IllegalBlockSizeException”
“IllegalBlockSizeException”
会爆发在解密时消息长度不是8位的翻番的时候。这里有一个起点于
ProgramCreek.com 的事例(@ProgramCreek卡塔尔(قطر‎:

@Overrideprotected byte[] engineWrap(Key key) throws IllegalBlockSizeException, InvalidKeyException { try { byte[] encoded = key.getEncoded(); return engineDoFinal(encoded, 0, encoded.length); } catch (BadPaddingException e) { IllegalBlockSizeException newE = new IllegalBlockSizeException(); newE.initCause(e); throw newE; }}

“IllegalBlockSizeException”
恐怕由如下处境所产生:使用的加解密算法不相近。被解密的新闻在传递过来的路上被截断恐怕发生了乱码。能够读一读这里关于怎么着制止IllegalBlockSizeException 错误发生的商量(@StackOverflow卡塔尔(قطر‎38.
“BadPaddingException”
“BadPaddingException”会生出于解密时填充块被用来创制贰个得以用
8 位的翻番来计量长度的音讯的时候。这里有二个出自于 Stack Overflow
的例证(@StackOverflow卡塔尔(قطر‎:

javax.crypto.BadPaddingException: Given final block not properly paddedat com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)at javax.crypto.Cipher.doFinal(DashoA13*..)

被加密的数据是二进制的,由此不用尝试着在一个字符串中去存款和储蓄它,也许也是有相当的大希望是加密时期数据未有打开适合的量的填充。能够读一读这里关于如何防范BadPaddingException 产生的座谈。 (@StackOverflow卡塔尔国39.
“IncompatibleClassChangeError”
“IncompatibleClassChangeError”
是链接错误 LinkageError
的一种样式,会在四个基类在其子类已经编写翻译过了随后产生了定义时产生。这里有二个出自于
How to Do in Java 的例证 (@HowToDoInJava卡塔尔(قطر‎:

Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing classat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(Unknown Source)at java.security.SecureClassLoader.defineClass(Unknown Source)at java.net.URLClassLoader.defineClass(Unknown Source)at java.net.URLClassLoader.access$000(Unknown Source)at java.net.URLClassLoader$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClassInternal(Unknown Source)at net.sf.cglib.core.DebuggingClassWriter.toByteArray(DebuggingClassWriter.java:73)at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:26)at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)at net.sf.cglib.proxy.Enhancer.(Enhancer.java:69)

当 “IncompatibleClassChangeError”
产生时,有能产生了如下景况:忘记了在主方法的 static
关键词。三个官方的类被私下地动用。一个类爆发了改换,可是还应该有任何类使用原来的签名来援引它。能够品味把富有的类公事都剔除掉然后整个重新编写翻译。可尝试那么些手续来解决“IncompatibleClassChangeError”问题(@javacodegeeks卡塔尔(قطر‎40. “FileNotFoundException”这么些 Java
软件错误信息会在钦赐路径名上的文本子虚乌有是被抛出来。

@Override public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { if (uri.toString().startsWith(FILE_PROVIDER_PREFIX)) { int m = ParcelFileDescriptor.MODE_READ_ONLY; if (mode.equalsIgnoreCase("rw")) m = ParcelFileDescriptor.MODE_READ_WRITE; File f = new File(uri.getPath()); ParcelFileDescriptor pfd = ParcelFileDescriptor.open(f, m); return pfd; } else { throw new FileNotFoundException("Unsupported uri: " + uri.toString()); }}

出来钦赐路径名上的公文不设有之外,这种难题也会有比比较大希望意思是存在的文件是不足被访谈的。能够读一读这里关于为什么“FileNotFoundException”会被抛出的商讨。(@StackOverflow卡塔尔(قطر‎41.
“EOFException”
“EOFException”会在出口时十分大心达到了文本的极点或许流的极点时被抛出。这里有贰个出自于
JavaBeat 的抛出了叁个 EOFException 的应用程序示例:

import java.io.DataInputStream;import java.io.EOFException;import java.io.File;import java.io.FileInputStream;import java.io.IOException;public class ExceptionExample { public void testMethod1() { File file = new File("test.txt"); DataInputStream dataInputStream = null; try { dataInputStream = new DataInputStream(new FileInputStream(file)); while (true) { dataInputStream.readInt(); } } catch (EOFException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (dataInputStream != null) { dataInputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { ExceptionExample instance1 = new ExceptionExample(); instance1.testMethod1(); }}

运作上述顺序会以致如下万分:

java.io.EOFExceptionat java.io.DataInputStream.readInt(DataInputStream.java:392)at logging.simple.ExceptionExample.testMethod1(ExceptionExample.java:16)at logging.simple.ExceptionExample.main(ExceptionExample.java:36)

当前边已经未有数据可供出口了,可 DataInputStream
仍在品尝读取流中的数据, “EOFException” 就能够被抛出来。它也得以生出于
ObjectInputStream 和 RandomAccessFile
类的逻辑之中。能够读一读这里关于在运营 Java
软件时“EOFException”何时会时有发生的商量。(@StackOverflow卡塔尔国42.
“UnsupportedEncodingException”
该 Java
软件错误新闻会在字符编码不被情况所协理的时候发出 (@Penn卡塔尔国。

public UnsupportedEncodingException()

所采纳的 Java
虚拟机不帮忙某一种给定的字符集是有希望的。能够读一读这里关于什么在运维Java 软件时管理“UnsupportedEncodingException”的座谈
(@StackOverflow卡塔尔(قطر‎43. “SocketException”“SocketException”
在开创大概访问套接字的时候有不当发生(@ProgramCreek卡塔尔(قطر‎.

public void init(String contextName, ContextFactory factory) { super.init(contextName, factory); String periodStr = getAttribute(PERIOD_PROPERTY); if (periodStr != null) { int period = 0; try { period = Integer.parseInt(periodStr); } catch (NumberFormatException nfe) {} if (period = 0) { throw new MetricsException("Invalid period: " + periodStr); } setPeriod(period); } metricsServers = Util.parse(getAttribute(SERVERS_PROPERTY), DEFAULT_PORT); unitsTable = getAttributeTable(UNITS_PROPERTY); slopeTable = getAttributeTable(SLOPE_PROPERTY); tmaxTable = getAttributeTable(TMAX_PROPERTY); dmaxTable = getAttributeTable(DMAX_PROPERTY); try { datagramSocket = new DatagramSocket(); } catch (SocketException se) { se.printStackTrace(); }}

该特别日常会在最菲尼克斯接数因为正如原由此满了的时候被抛出来:已经远非越来越多的网络端口能够供应该应用程序了。系统未有丰裕的内部存款和储蓄器来支撑新的接连几天。能够读一读这里关于在运行Java 软件时怎么着缓慢解决“SocketException”难题的座谈。(@StackOverflow卡塔尔国44.
“SSLException”
该 Java 软件错误新闻会在有跟 SSL
相关的操作败北时产生。如下是二个起点于 Atlassian 的演示(@Atlassian卡塔尔国:

com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty at com.sun.jersey.client.apache.ApacheHttpClientHandler.handle(ApacheHttpClientHandler.java:202) at com.sun.jersey.api.client.Client.handle(Client.java:365) at com.sun.jersey.api.client.WebResource.handle(WebResource.java:556) at com.sun.jersey.api.client.WebResource.get(WebResource.java:178) at com.atlassian.plugins.client.service.product.ProductServiceClientImpl.getProductVersionsAfterVersion(ProductServiceClientImpl.java:82) at com.atlassian.upm.pac.PacClientImpl.getProductUpgrades(PacClientImpl.java:111) at com.atlassian.upm.rest.resources.ProductUpgradesResource.get(ProductUpgradesResource.java:39) 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.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:206) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:90) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61) at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept(ExpandInterceptor.java:38) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors(DispatchProviderHelper.java:98) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.access$100(DispatchProviderHelper.java:28) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:202) ...Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty ...Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty ...Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

正如情状有超大希望会引致那样的主题素材爆发:服务器可能顾客端上的注脚已经晚点了。服务器上的端口已经被重设成此外的一个。能够读一读这里关于在
Java 软件中哪些会引致“SSLException”
错误爆发的座谈。(@StackOverflowState of Qatar45.
“MissingResourceException”
“MissingResourceException”
会在有些财富遗失时发出。假诺财富已经处高尚确的类路线之下的话,那就日常是因为二个脾气配置文件并从未被妥贴的拓宽了安顿。这里有三个示例
(@TIBCOState of Qatar:

java.util.MissingResourceException: Can't find bundle for base name localemsgs_en_US, locale en_USjava.util.ResourceBundle.throwMissingResourceExceptionjava.util.ResourceBundle.getBundleImpljava.util.ResourceBundle.getBundlenet.sf.jasperreports.engine.util.JRResourcesUtil.loadResourceBundlenet.sf.jasperreports.engine.util.JRResourcesUtil.loadResourceBundle

能够读一读这里关于在运行 Java
软件时怎样修复“MissingResourceException”难点的商酌。46.
“NoInitialContextException”
“NoInitialContextException”会在 Java
应用程序想要施行命名操作不过不可能创立叁个链接的时候发出(@TheASFState of Qatar.

[java] Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial[java] at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)[java] at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)[java] at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)[java] at javax.naming.InitialContext.lookup(InitialContext.java:351)[java] at org.apache.camel.impl.JndiRegistry.lookup(JndiRegistry.java:51)

那会是一个解决起来比较复杂的难点,然而依旧有一部分恐怕的主题素材会招致“NoInitialContextException”
错误音讯的产生:应用程序大概未有例行的证件来确立连接。代码可能未有承认JNDI 所须求的实现。InitialContext
类可能未有科学的性子来开展安排。能够读一读这里关于在运作 Java
应用程序时“NoInitialContextException”
意味着的是怎么样的争辩。(@StackOverflow卡塔尔(قطر‎47.
“NoSuchElementException”
“NoSuchElementException” 会在二个迭代
(举个例子二个 for 循环卡塔尔国尝试去拜会已经未有了的下三个 成分时发出。

public class NoSuchElementExceptionDemo{ public static void main(String args[]) { Hashtable sampleMap = new Hashtable(); Enumeration enumeration = sampleMap.elements(); enumeration.nextElement(); //java.util.NoSuchElementExcepiton here because enumeration is empty }}Output:Exception in thread "main" java.util.NoSuchElementException: Hashtable Enumerator at java.util.Hashtable$EmptyEnumerator.nextElement(Hashtable.java:1084) at test.ExceptionTest.main(NoSuchElementExceptionDemo.java:23)

“NoSuchElementException”
可以被如下这么些办法抛出:Enumeration::nextElement(卡塔尔NamingEnumeration::next(卡塔尔StringTokenizer::nextElement(卡塔尔(قطر‎Iterator::next(State of Qatar能够读一读那些关于在
Java 软件中哪些修复 “NoSuchElementException”的教程。(@javinpaul卡塔尔48.
“NoSuchFieldError”
该 Java
软件错误音讯会在八个应用程序尝试去访谈多少个对象中的有个别域,不过内定域在类中消除时发出
(@sourceforge卡塔尔国.

public NoSuchFieldError()

该错误平日会在编写翻译器中被抓获,但假如三个类的概念在编写翻译和平运动转时期被涂改了话,也会被擒获到。能够读一读这里关于在
Java
软件中怎么样搜索是何许导致了“NoSuchFieldError”的座谈。@StackOverflow49.
“NumberFormatException”
该 Java
软件错误音讯会在应用程序尝试将多少个字符串转换到一个数值类型,
而该数值并不是二个可行的数字字符串时发出(@alvinalexander卡塔尔。

package com.devdaily.javasamples;public class ConvertStringToNumber { public static void main(String[] args) { try { String s = "FOOBAR"; int i = Integer.parseInt(s); // this line of code will never be reached System.out.println("int value = " + i); } catch (NumberFormatException nfe) { nfe.printStackTrace(); } }}

当存在如下情状时 “NumberFormatException”
会被抛出:数值中前边或前面包车型客车空格。符号不在数值的前头。数值有逗号。本地化逻辑恐怕不会将其识别为叁个立竿见影的数值。数值太大,给定的数值类型装不下。能够读一读这里关于在运行Java 软件时如何幸免“NumberFormatException”的座谈。(@StackOverflowState of Qatar.50.
“TimeoutException”
该 Java
软件错误音信会在有三个梗阻操作超时的时候产生:

private void queueObject(ComplexDataObject obj) throws TimeoutException, InterruptedException { if (!queue.offer(obj, 10, TimeUnit.SECONDS)) { TimeoutException ex = new TimeoutException("Timed out waiting for parsed elements to be processed. Aborting."); throw ex; }}

能够读一读这里关于在运行 Java 软件时怎样处理“TimeoutException”的研讨。(@StackOverflow卡塔尔.总结总结就那些了!
倘让你时刻都在念书这一个,
就活该能够管理大多的运作时和编写翻译器错误乃至那些了。要不要把这两篇文章伏贴保存起来也许增添到书签以便能便捷地举行回想,敬随君意。而对付高档一点儿的
Java 开辟者工具,不忘记了能够下载《Java 开拓者综合指南》哦。援用最早的小说:50
Common Java Errors and How to Avoid Them (Part 2卡塔尔翻译:leoxu

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图