相关疑难解决方法(0)

如何在Java中进行URL解码?

在Java中,我想转换它:

https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do%3Frequest_type
Run Code Online (Sandbox Code Playgroud)

对此:

https://mywebsite/docs/english/site/mybook.do&request_type
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

class StringUTF 
{
    public static void main(String[] args) 
    {
        try{
            String url = 
               "https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do" +
               "%3Frequest_type%3D%26type%3Dprivate";

            System.out.println(url+"Hello World!------->" +
                new String(url.getBytes("UTF-8"),"ASCII"));
        }
        catch(Exception E){
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但它不能正常工作.这些%3A%2F格式被称为什么以及如何转换它们?

java url-encoding

311
推荐指数
7
解决办法
39万
查看次数

何时选择已检查和未检查的例外

在Java(或任何其他具有已检查异常的语言)中,在创建自己的异常类时,如何确定是应该选中还是取消选中它?

我的直觉是,如果调用者能够以某种富有成效的方式恢复,那么将调用一个已检查的异常,其中未经检查的异常对于不可恢复的情况更多,但我会对其他人的想法感兴趣.

java exception checked-exceptions

197
推荐指数
10
解决办法
5万
查看次数

Java 8:如何使用流中的异常抛出方法?

假设我有一个类和一个方法

class A {
  void foo() throws Exception() {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我想为A一个流传递的每个实例调用foo,如:

void bar() throws Exception {
  Stream<A> as = ...
  as.forEach(a -> a.foo());
}
Run Code Online (Sandbox Code Playgroud)

问题:如何正确处理异常?代码无法在我的机器上编译,因为我没有处理foo()可能抛出的异常.在throws Exceptionbar似乎是没用在这里.这是为什么?

java unhandled-exception java-8 java-stream

154
推荐指数
7
解决办法
14万
查看次数

Java或C#中的异常管理的最佳实践

我一直在决定如何在我的应用程序中处理异常.

如果我的异常问题来自1)通过远程服务访问数据或2)反序列化JSON对象.不幸的是,我不能保证这些任务中的任何一个都成功(切断网络连接,不正确的JSON对象,这是我无法控制的).

因此,如果我遇到异常,我只需在函数内捕获它并返回FALSE给调用者.我的逻辑是,所有调用者真正关心的是任务是否成功,而不是为什么它不成功.

这是典型方法的一些示例代码(在JAVA中)

public boolean doSomething(Object p_somthingToDoOn)
{
    boolean result = false;

    try{
        // if dirty object then clean
        doactualStuffOnObject(p_jsonObject);

        //assume success (no exception thrown)
        result = true;
    }
    catch(Exception Ex)
    {
        //don't care about exceptions
        Ex.printStackTrace();
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我认为这种方法很好,但我真的很想知道管理异常的最佳实践是什么(我应该在调用堆栈中一直冒出异常吗?).

总结关键问题:

  1. 是否可以捕获异常但不会冒泡或正式通知系统(通过日志或通知用户)?
  2. 对于不会导致所有需要try/catch块的异常的最佳实践有哪些?

跟进/编辑

感谢所有反馈,在网上找到了一些关于异常管理的优秀来源:

似乎异常管理是根据上下文而变化的事情之一.但最重要的是,人们应该如何管理系统中的异常.

另外注意通过过多的尝试/捕获代码腐烂或不给予例外它的尊重(例外是警告系统,还需要警告什么?).

此外,这是m3rLinEz的一个很好的选择评论.

我倾向于同意Anders Hejlsberg和你的看法,大多数来电者只关心操作是否成功.

从这个评论中,它提出了一些在处理异常时要考虑的问题:

  • 抛出此异常有什么意义?
  • 处理它有什么意义?
  • 呼叫者是否真的关心异常,还是只关心呼叫是否成功?
  • 是否强制调用者管理潜在的异常优雅?
  • 你是否尊重这种语言的含义?
    • 你真的需要返回像布尔这样的成功标志吗?返回boolean(或int)更像是一种C心态而不是Java(在Java中你只是处理异常).
    • 遵循与语言相关的错误管理结构:)!

c# java error-handling exception

117
推荐指数
5
解决办法
3万
查看次数

在Java中,何时应该创建一个已检查的异常,何时应该是运行时异常?

可能重复:
何时选择已检查和未检查的异常

我应该何时创建一个已检查的异常,何时应该生成运行时异常?

例如,假设我创建了以下类:

public class Account {
    private float balance;

    /* ... constructor, getter, and other fields and methods */

    public void transferTo(Account other, float amount) {
        if (amount > balance)
            throw new NotEnoughBalanceException();
        /* ... */
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该如何创建我的NotEnoughBalanceException?它应该延伸Exception还是RuntimeException?或者我应该使用IllegalArgumentException

java exception

93
推荐指数
8
解决办法
3万
查看次数

使用try/catch防止应用程序崩溃

我一直在研究一款try/catch经常使用的Android应用程序,以防止它甚至在没有必要的地方崩溃.例如,

xml layout带有的视图id = toolbar引用如下:

// see new example below, this one is just confusing
// it seems like I am asking about empty try/catch
try {
    View view = findViewById(R.id.toolbar);
}
catch(Exception e) {
}
Run Code Online (Sandbox Code Playgroud)

整个应用程序都使用此方法.堆栈跟踪没有打印,很难找到出错的地方.应用程序突然关闭而不打印任何堆栈跟踪.

我让我的大四学生向我解释,他说,

这是为了防止生产中的崩溃.

我完全不同意它.对我而言,这不是阻止应用程序崩溃的方法.它表明开发人员知道他/她在做什么,并且有疑问.

这是行业中使用的方法,以防止企业应用程序崩溃?

如果try/catch是真的,那么我们真的需要可以附加一个带有UI线程或其他线程的异常处理程序并捕获所有内容吗?如果可能的话,那将是更好的方法.

是的,空try/catch是坏的,即使我们将堆栈跟踪或日志异常打印到服务器,try/catch在所有应用程序中随机包装代码块对我来说没有意义,例如当每个函数都包含在a中时try/catch.

UPDATE

由于这个问题引起了很多关注,有些人误解了这个问题(也许是因为我没有明确表达过),我将把它改写一下.

这是开发人员在这里做的事情

  • 一个函数被编写和测试,它可以是一个小函数,它只是初始化视图或复杂的视图,在测试后它被包裹在try/catch块中.即使是永远不会抛出任何异常的函数.

  • 这种做法在整个申请中使用.有时会打印堆栈跟踪,有时只会出现debug log一些随机错误消息.此错误消息因开发人员而异.

  • 使用这种方法,应用程序不会崩溃,但应用程序的行为变得不确定.甚至有时候很难跟上出错的地方.

  • 我一直在问的真正问题是; 为了防止企业应用程序崩溃,业界是否遵循这种做法?而且我不是在询问空的try/catch.是不是,用户喜欢不会比意外行为的应用程序崩溃的应用程序?因为它真的归结为崩溃或用空白屏幕呈现用户或行为用户不知道.

  • 我在这里发布了一些真实代码的片段

      private void …
    Run Code Online (Sandbox Code Playgroud)

java android design-patterns coding-style try-catch

77
推荐指数
5
解决办法
2万
查看次数

未经检查的异常或运行时异常之间的区别

这是一个面试问题.未检查的异常和错误之间的主要区别是什么,因为两者都没有被捕获?他们将终止该计划.

java exception unchecked-exception

33
推荐指数
3
解决办法
3万
查看次数

重新抛出异常:为什么方法在没有throws子句的情况下编译?

在下面的源代码我重新抛出一个Exception.
为什么没有必要将throws关键字放在方法的签名上?

public void throwsOrNotThrowsThatsTheQuestion() {
    try {

        // Any processing

    } catch (Exception e) {
        throw e;
    }
}
Run Code Online (Sandbox Code Playgroud)

java

23
推荐指数
2
解决办法
5454
查看次数

可以在Swift中抛出"RuntimeException"而不声明它吗?

我想从一些"深度"函数中抛出一个异常,所以它会冒泡到另一个函数,我想抓住它.

f1调用f2调用f3调用... fN这可能会引发错误

我想抓住错误f1.

我已经读过,在Swift中我必须声明所有方法throws,并使用它们调用它们try.

但那很烦人:

enum MyErrorType : ErrorType {
    case SomeError
}

func f1() {
    do {
        try f2()
    } catch {
        print("recovered")
    }
}

func f2() throws {
    try f3()
}

func f3() throws {
    try f4()
}

...

func fN() throws {
    if (someCondition) {
      throw MyErrorType.SomeError
    }
}
Run Code Online (Sandbox Code Playgroud)

是不是有一个类似于RuntimeExceptionJava的概念,哪里throws不会一直泄密到调用链?

exception-handling exception runtimeexception swift

17
推荐指数
3
解决办法
6095
查看次数

如何在java中将错误日志或异常写入文件

有没有办法在java中的文件中写入错误日志或异常.我经历过Log4j.我搜索了一下,但diidnt找到了一个很好的解决方案.我写了一个简单的代码

catch (Exception e) {
    PrintWriter pw = new PrintWriter(new FileOutputStream("Log"));     
    e.printStackTrace(pw);
} 
Run Code Online (Sandbox Code Playgroud)

有没有其他方法来记录错误或异常?任何机构可以提供我与Log4j的示例?

java log4j error-log

15
推荐指数
3
解决办法
13万
查看次数