





















这是一个创建于 611 天前的主题,其中的信息可能已经有所发展或是发生改变。
如果是在 java 里面直接在方法里面抛出 2 个异常即可。 但是在 kotlin 里面必须
val runResult = runCatching{
HttpResponse(it.isSuccessful,it.code,it.message)
}
if(runResult.isFailure){
when(moveFileAgain.exceptionOrNull()){
// 单独处理异常
}
}
// 还有写一些(这里请求成功了)
if(result.code == 404){
return runResult.getOrDefault()
}
if(result.code == 401){
// 认证失败了
return runResult.getOrDefault()
}
如果是在 java 里面就再简单不过了,直接定义两个异常,全局处理. 受检查异常是真的爽。 特别是在嵌套请求,1 个 api 要请求好几次的情况。
这么说吧。 这里面的很多常见使用 java 来写代码可能要简单的多。 哪有这么多的破事。
大佬们有什么办法处理这种事情, 我的要求就是登陆 401 或者有异常直接返回就是了。kotlin 实在是太繁琐了。
1 RicardoY 2024 年 10 月 12 日没有看懂这和受检异常的关系是什么,你用 kotlin 不一样可以抛出自定义异常吗 |
2 300 2024 年 10 月 12 日 via Android同样看不懂你要什么 val exception = Exception("401") if (xxx) throw exception |
3 lurenjiauser 2024 年 10 月 12 日我猜 op 的意思是在收到非 2xx 状态码的时候抛出异常。 但是这个是 API 的特性,而不是语言的特性。比如 okhttp ,ktor 等。api 一般都有选项可以设置什么时候抛出异常,什么时候认为是正常的 response 。 |
4 sagaxu 2024 年 10 月 12 日unchecked exception 和 checked exception ,唯一区别就是 unchecked 可以隐式想上传递,checked 必须包在 try 中或者在方法签名中显式声明。 调用链路的上层,IDE 会提示哪些 checked exception 没有处理,而 unchecked exception 你无法知道可能会抛出哪些异常。所以 Kotlin 使用 @Throws(IOException::class)把信息包含进去。 所以 OP 在 Kotlin 中同样可以“直接定义两个异常,全局处理”。但很遗憾,他用 runCatching 吃掉了异常,然后手动处理,把 Kotlin 写出了 Go 的感觉。 |
5 cutiechi 2024 年 10 月 12 日有没有可能是你不会用 |
6 hwb 2024 年 10 月 12 日有没有可能是你不会用 |
7 chendy 2024 年 10 月 12 日看到标题:怎么会有人喜欢 Checked Exception 呢? 代码封装或者风格的问题,和语言不能说毫无关系只能说毫无关系 |
8 deng1xia 2024 年 10 月 12 日自己定义一个方法统一判断然后抛出异常, |
9 Vaspike 2024 年 10 月 12 日java 能做的 kotlin 一定能做 |
10 jeesk 2024 年 10 月 12 日@Vaspike 能帮我强制处理异常不? 我嵌套 10 几个函数, 如果没有受检查异常, 每个都要单独判断. 处理工作量大幅增加. 现在只能将异常封装在函数返回值里面. |
11 location123 2024 年 10 月 12 日使用 OkHttp 的情况下 第二种 |
16 QingXuJiaZhi 2024 年 10 月 12 日Checked Exception 与 Go 的 error 貌似有共通的思想。 |
17 githmb 2024 年 10 月 12 日《提问的艺术》 |
19 AoEiuV020JP 2024 年 10 月 12 日没懂,throw, try, catch, 哪个是 kotlin 办不到的,效果明明和 java 一样, |
21 githmb 2024 年 10 月 12 日@jeesk 吐槽也要吐槽对啊,什么叫”kotlin 里面必须“,然后贴一段排版差注释差的代码,不用 Result 风格不就行了? Kotlin 哪里不能抛异常了? |
23 yuezk 2024 年 10 月 12 日感觉是用法问题,还在用 Java 的语言习惯来写 Kotlin |
24 Leviathann 2024 年 10 月 12 日use typed error |
25 niubilewodev 2024 年 10 月 12 日看下来没看懂。 |
28 WebKit 2024 年 10 月 12 日感觉是你不会用,或者是你编码习惯的问题。除了成功。其他都是异常情况,必须要处理异常情况,不存在忘记的情况 |
30 zed1018 2024 年 10 月 12 日我反而讨厌 checked exception ,正常需要处理的肯定会 catch ,不需要处理的就像让他 throw 就完事了,遇到 checked 的还要 catch 以后转 runtime ,当然,我是后端有框架兜底策略。 |
31 jeesk 2024 年 10 月 12 日@superchijinpeng 你测试一定能测试出所有的 BUG. 场景不一样, 我觉得很多人 get 不到我的点. 如果支持受检测异常, 异常处理只需要在调用处处理异常即可, 但是 kotlin 没有受检异常, 可能会漏掉. 难道我不知道 kotlin 一样能使用 try catch 吗? 我说没有受检异常, 你跑来告诉我可以使用 try catch . 这是一个东西吗? |
32 unco020511 2024 年 10 月 12 日这个是你真的不会用了,和语言无关啊 |
34 githmb 2024 年 10 月 12 日就问你一个问题,空指针异常是不是 Java 程序出问题最多的异常,为什么空指针异常要搞成运行时异常,让这么多人漏掉? |
36 yooomu 2024 年 10 月 12 日没看懂你的诉求,checked exception 和 unchecked 的唯一不同就是编译器强制你捕获它。所以是因为 kotlin 编译器没有强制你捕获让你没有安全感吗 |
37 catamaran 2024 年 10 月 12 日受检异常,这是谁起的名字,我第一次看到 |
38 Mystery0 2024 年 10 月 12 日java 里面怎么全局处理?用 那 kt 也没阉割这个啊,kt 不照样可以写这个 |
40 wwalkingg 2024 年 10 月 12 日1. 题主不熟悉 Kotlin |
41 Belmode 2024 年 10 月 12 日 via Android无力吐槽 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。