Tag: exception

从CompletableFuture抛出exception

我有以下代码: // How to throw the ServerException? public void myFunc() throws ServerException{ // Some code CompletableFuture a = CompletableFuture.supplyAsync(() -> { try { return someObj.someFunc(); } catch(ServerException ex) { // throw ex; gives an error here. } })); // Some code } someFunc()抛出ServerException 。 我不想在这里处理它,但是将someFunc()的exceptionsomeFunc() myFunc()调用者。

字段初始化中未处理的exception

Java是否有任何语法来管理在声明和初始化类的成员变量时可能抛出的exception? public class MyClass { // Doesn’t compile because constructor can throw IOException private static MyFileWriter x = new MyFileWriter(“foo.txt”); … } 或者这些初始化总是必须转移到一个方法,我们可以声明throws IOException或将初始化包装在try-catch块中?

使用注释进行exception处理?

假设我有一种抛出某种exception的方法。 抛出exception的代码位于访问外部服务的第三方库中。 我有一些类可以与外部服务进行大量的工作,并且在整个过程中有很多exception处理来处理潜在的问题。 我遇到的问题是我可能有很多例外,但我可能只需要执行一些操作,如果有的话,并且有大量的try / catch块。 exception的类型甚至可能不相关,或者不同的方法可能抛出相同类型的exception,但是根据抛出它的方法需要采取不同的操作。 我正在寻找的是一个可以取代try / catch的注释,并简单地指示当该方法中存在exception时要采取的行为。 我知道Spring ApsectJ可以做到这一点,但我现在无法轻松添加任何新的依赖项或修改pom来调整现有的依赖项。 因此,我希望通过自定义注释可以实现这一点。 例如: @Catcher(action=SomeEnum.SOME_ACTION) public void doSomething(ServiceObj obj) throws SomeException { ExternalService.makeThingsHappen(obj); } 当然,我会假设一个单独的类会处理exception。 另一个困难是我需要传递的ServiceObj。 如果makeThingsHappen()失败,我可能需要obj来执行其他操作。 action变量将告诉处理程序类如何处理obj。 这可以在没有严重粪便的情况下完成,还是我希望有可能不存在的东西?

清除Java堆栈跟踪中的噪音

我的Java堆栈跟踪有很多我不关心的条目,显示通过代理和Springreflection方法的方法调用以及类似的东西。 它可能很难从我的代码中挑选出实际来自堆栈跟踪的部分。 Ruby on Rails包含一个“堆栈跟踪清理器”,您可以在其中指定堆栈跟踪模式列表以从打印的堆栈跟踪中省略 – 对于Java来说,通用的最佳方法是什么? 如果这在任何地方都有效,那将是最好的,包括Eclipse jUnit runner。

throws x extends Exception方法签名

阅读Optional的JavaDoc,我遇到了一个奇怪的方法签名; 我一生中从未见过: public T orElseThrow(Supplier exceptionSupplier) throws X extends Throwable 乍一看,我想知道如何通用exception是可能的,因为你不能这样做( 这里和这里 )。 在第二个想法,这开始有意义,因为它只是绑定Supplier ……但供应商本身确切地知道它应该是什么类型,在generics之前。 但第二行击中了我: throws X是一个完整的genericsexception类型。 接着: X extends Throwable , 这意味着什么? X已经绑定在方法签名中。 这会以任何方式解决一般的exception限制吗? 为什么不throws Throwable ,其余的将被类型擦除删除? 一,不是直接相关的问题: 是否需要将此方法捕获为catch(Throwable t)或提供的Supplier类型; 因为它无法在运行时检查?

在Java中检查二维数组中的邻居的更有效方法

嘿所有,对于我的一些大学作业,我发现需要检查二维arrays(网格)中的相邻单元格。 我使用的解决方案是使用exception的一些黑客攻击,我正在寻找一种方法来清理它,而不if像我的一些同学那样加载if语句。 我目前的解决方案是 for ( int row = 0; row < grid.length; row++ ) { for ( int col = 0; col < grid.length; col++ ) { // this section will usually be in a function // checks neighbours of the current "cell" try { for ( int rowMod = -1; rowMod <= 1; rowMod++ […]

为我的应用程序的所有线程定义一个全局UncaughtExceptionHandler

我想在我的Java应用程序中定义一个应用程序级别UncaughtExceptionHandler ,如果在我的应用程序的一个线程中抛出未捕获的exception,则调用该应用程序。 我知道可以为一组线程( ThreadGroup )定义一个未捕获的exception,我实际上正在使用它,但我想为没有定义自己的未捕获exception处理程序的线程定义一个全局未捕获的exception,或者是没有与一组定义了默认exception处理程序的线程相关联 。 所以例如我想达到这样的东西: 1° LEVEL —> Call thread own UncaughtExceptionHandler —> 2° LEVEL Call Thread Group UncaughtExceptionHandler —> 3° LEVEL Call application(default) UncaughtExceptionHandler 简单来说,我想覆盖默认的UncaughtExceptionHandler并定义我自己的处理程序,而不是在System.err上打印堆栈跟踪(这是默认行为)。 例如,在C#.NET中,我执行类似的操作, 处理应用程序的Main()方法中的未处理和线程exception事件处理程序: AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 即使在Java中也可以完成? 如何在Java中覆盖默认的UncaughtExceptionHandler?

哪个更好/更有效:检查错误值或捕获Java中的exception

哪个在Java中效率更高:检查错误值以防止exception或让exception发生并捕获它们? 以下是两个示例代码块,用于说明这种差异: void doSomething(type value1) { ResultType result = genericError; if (value1 == badvalue || value1 == badvalue2 || …) { result = specificError; } else { DoSomeActionThatFailsIfValue1IsBad(value1); // … result = success; } callback(result); } 与 void doSomething(type value1) { ResultType result = genericError; try { DoSomeActionThatFailsIfValue1IsBad(value1); // … result = success; } catch […]

如何处理JPA唯一约束违规?

当违反唯一约束时,抛出javax.persistence.RollbackException 。 但抛出RollbackException可能有多种原因。 如何才能发现违反了一个独特的约束? try { repository.save(article); } catch(javax.persistence.RollbackException e) { // how to find out the reason for the rollback exception? }

BadPaddingException:pad块损坏

我正在尝试使用Rijndael / CBC / PKCS7解密用C#加密的Java文件。 我一直得到以下exception: javax.crypto.BadPaddingException:pad块损坏 在org.bouncycastle.jce.provider.JCEBlockCipher.engineDoFinal(未知来源) 在javax.crypto.Cipher.doFinal(DashoA13 * ..) 在AESFileDecrypter.decrypt(AESFileDecrypter.java:57) 当web服务器为第一个字节[]调用doFinal(inpbytes)方法时。 我猜这是钥匙或IV的问题。 我在我的文件系统上有加密文件进行测试。 是否有任何人可以看到我的代码下面明显错误? *** keyStr是base64编码的 public AESFileDecrypter(String keyStr){ try { Security.addProvider(new BouncyCastleProvider()); convertIvParameter(); key = new sun.misc.BASE64Decoder().decodeBuffer(keyStr); //use the passed in Base64 decoded key to create a key object decryptKey = new SecretKeySpec(key, “AES”); //specify the encryption algorithm decryptCipher = Cipher.getInstance(“AES/CBC/PKCS7Padding”, “BC”); […]