惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
P
Privacy & Cybersecurity Law Blog
P
Proofpoint News Feed
S
Schneier on Security
G
GRAHAM CLULEY
The Hacker News
The Hacker News
C
Cybersecurity and Infrastructure Security Agency CISA
Know Your Adversary
Know Your Adversary
C
Cyber Attacks, Cyber Crime and Cyber Security
爱范儿
爱范儿
M
MIT News - Artificial intelligence
V
Vulnerabilities – Threatpost
F
Fortinet All Blogs
月光博客
月光博客
Simon Willison's Weblog
Simon Willison's Weblog
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
Spread Privacy
Spread Privacy
P
Proofpoint News Feed
A
About on SuperTechFans
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Tor Project blog
T
Troy Hunt's Blog
Latest news
Latest news
N
Netflix TechBlog - Medium
Vercel News
Vercel News
Stack Overflow Blog
Stack Overflow Blog
Project Zero
Project Zero
N
News and Events Feed by Topic
F
Full Disclosure
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
CERT Recently Published Vulnerability Notes
H
Hacker News: Front Page
C
Cisco Blogs
I
Intezer
P
Privacy International News Feed
MongoDB | Blog
MongoDB | Blog
L
LINUX DO - 热门话题
Blog — PlanetScale
Blog — PlanetScale
Security Latest
Security Latest
Last Week in AI
Last Week in AI
Scott Helme
Scott Helme
B
Blog
博客园_首页
MyScale Blog
MyScale Blog
Cloudbric
Cloudbric

Kotlin

compose 使用性能问题 - V2EX 有人在项目里面使用 compose 开发吗 - V2EX 大家会在老项目中使用 kotlin 吗 - V2EX Kotlin 中文文档 2.2.20 版翻译完成了 - V2EX Kotlin 中文文档 2.1.20 版翻译完成了 - V2EX Kotlin 中文文档 2.1.0 版翻译完成了 - V2EX Kotlin 中文文档 2.0.20 版翻译完成了 - V2EX MIUI API28+ActivityTransition API+kotlin 无法检测到活动,只能手动触发广播,怎么定位问题? - V2EX 我老人家翻译的 Kotlin 中文文档,正在更新到最新的 2.0.20 版 - V2EX 我老人家翻译的《Kotlin 语言参考文档》中文版,已经迁移到了新的 Writerside 环境 - V2EX 屎山代码一则 - V2EX Kotlin 2.0.0 正式版发布了 - V2EX kotlin 中的 select 到底可以 select 哪些内容啊? - V2EX 请大佬帮忙看一眼我这个注解为什么没能抑制 never used 警告? - V2EX 我老人家翻译的《Kotlin 语言参考文档》中文版 - V2EX 使用 compose 开发了讯飞星火认知模型桌面端应用 - V2EX Kotlin 的协程到底是用来干嘛的?为什么没有可 suspend 的异步 IO 函数? - V2EX Kotlin 协程 Coroutine 与 Spring Boot 项目整合的最佳实践是怎样的? - V2EX 谷歌出品 kotlin 入门教程 - V2EX kotlin 源代码数据集 - V2EX KMM 中目前最成熟,最推荐的 shared viewmodel 方案是什么. - V2EX ​ Java /kotlin AST 构建相关,悬赏 200 求解,人已经麻了 - V2EX 有没有 Kotlin 讲协程比较好的书籍或博客连载 - V2EX ArrayList.set 提示 第二个参数 element 类型是 NoThing ? - V2EX 哪些公司后端用 kotlin 写的 - V2EX kotlin 表达式引擎 - V2EX 最近在看 Kotlin 别人一些代码, 看到如下的代码惊呆了 - V2EX Kotlin 的协程是真协程吗?被 b 站博主搞蒙了 - V2EX 有没有人能帮我解释一下,这里面的代码.如果我创建一个新窗口,按照这个逻辑,怎么显示出来 - V2EX 怎么解决 public reified 函数会要求所有用到的依赖都是 public 的问题 - V2EX Result 的方式处理异常用的多吗,我看了下好像和比较受好评的 rust result 用法差不多 - V2EX Kotlin 更换了新 logo:更加立体、更加清晰 - V2EX Kotlin 1.5.20 发布了~快来看看新特性 - V2EX 关于 kotlin 处理多个可空类型的变量的问题 - V2EX 求解这个 eval 函数返回值为什么是个 lambda?怎么才能拿到值? ​​​ - V2EX kotlin lazy 形式的 grouping and mapping 应该怎么写, sequence 里 grouping + aggregate 怎么比 Java stream 还复杂得多 - V2EX 强大的 v2ex,大家擅长 Kotlin, webview 交互的伙伴,来一波 - V2EX springboot kotlin 和 Java 混编, json 序列化用哪个比较好 - V2EX 有哪些知名 iOS 应用是纯 Kotlin 开发的? - V2EX [协程递归问题请教] - V2EX kotlin 打包问题 - V2EX 求推荐 kotlin 安卓开发教程 - V2EX Kotlin 1.4 Released - V2EX 请教一下 kotlin json 序列化及配合 data class 的正确姿势 - V2EX 各位公司项目后端有用 Kotlin + Spring 的吗, DB 层框架选用的什么? - V2EX 慌的一批, Kotlin 这么优雅的语言为什么不火呢 - V2EX Kotlin 如何检测所有 lateinit 的 field 是否初始化 - V2EX 初入 kotlin,源码找不见求教 - V2EX libcore.reflect.parameterizedtypeimpl cannot be cast to Java .lang.clas 这个错误 我真是莫名其妙 - V2EX
kotlin 没有受检异常真太难顶了。吐槽 - V2EX
jeesk · 2024-10-12 · via Kotlin

这是一个创建于 611 天前的主题,其中的信息可能已经有所发展或是发生改变。

  1. 比如我要统一处理登陆失败和网络错误。

如果是在 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 实在是太繁琐了。

RicardoY

1

RicardoY      2024 年 10 月 12 日

没有看懂这和受检异常的关系是什么,你用 kotlin 不一样可以抛出自定义异常吗

300

2

300      2024 年 10 月 12 日 via Android

同样看不懂你要什么

val exception = Exception("401")

if (xxx) throw exception

lurenjiauser

3

lurenjiauser      2024 年 10 月 12 日

我猜 op 的意思是在收到非 2xx 状态码的时候抛出异常。

但是这个是 API 的特性,而不是语言的特性。比如 okhttp ,ktor 等。api 一般都有选项可以设置什么时候抛出异常,什么时候认为是正常的 response 。

sagaxu

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 的感觉。

cutiechi

5

cutiechi      2024 年 10 月 12 日   ❤️ 5

有没有可能是你不会用

hwb

6

hwb      2024 年 10 月 12 日

有没有可能是你不会用

chendy

7

chendy      2024 年 10 月 12 日

看到标题:怎么会有人喜欢 Checked Exception 呢?
看完内容:果然说的不是 Checked Exception

代码封装或者风格的问题,和语言不能说毫无关系只能说毫无关系

deng1xia

8

deng1xia      2024 年 10 月 12 日

自己定义一个方法统一判断然后抛出异常,
然后 BaseViewModel 的写一个协程的扩展函数去处理异常,
比如你给这个函数起名字叫 runCatching

Vaspike

9

Vaspike      2024 年 10 月 12 日

java 能做的 kotlin 一定能做

jeesk

10

jeesk      2024 年 10 月 12 日

@Vaspike 能帮我强制处理异常不? 我嵌套 10 几个函数, 如果没有受检查异常, 每个都要单独判断. 处理工作量大幅增加. 现在只能将异常封装在函数返回值里面.

location123

11

location123      2024 年 10 月 12 日

使用 OkHttp 的情况下
只是判断这个请求的 http 请求错误 可以判断异常父类是否是 HttpException
inline fun <T : HttpService, R> T.execute(block: T.() -> BaseResponse<R>): Result<R> {
return try {
val response = block()
if (response.success) {
Result.Success(response.data)
} else {
//内置协议错误
// Result.Fail(response.header.code.toInt(), response.header.msg, false)
}
} catch (e: HttpException) {
//http fail
} catch (e:CancellationException){
//cancel
} catch (e: Exception) {
//other fail
}
}
网络请求全部走 HttpService 的扩展函数

第二种
在协程的顶级作用域里面统一处理

chendy

12

chendy      2024 年 10 月 12 日

@jeesk 再封装一层,异常情况直接甩异常出来

jeesk

14

jeesk      2024 年 10 月 12 日

@chendy 目前就是用 runtrycatch 了, 如果有异常, 直接将异常回填到返回值了。

jeesk

15

jeesk      2024 年 10 月 12 日

@maninfog 某些情况下合理使用受检查异常, 能省下很多的代码。

QingXuJiaZhi

16

QingXuJiaZhi      2024 年 10 月 12 日

Checked Exception 与 Go 的 error 貌似有共通的思想。

githmb

17

githmb      2024 年 10 月 12 日

《提问的艺术》

AoEiuV020JP

19

AoEiuV020JP      2024 年 10 月 12 日

没懂,throw, try, catch, 哪个是 kotlin 办不到的,效果明明和 java 一样,
你要不试试用 java 写了再一键转成 kotlin 看看再说有什么问题,

githmb

21

githmb      2024 年 10 月 12 日

@jeesk 吐槽也要吐槽对啊,什么叫”kotlin 里面必须“,然后贴一段排版差注释差的代码,不用 Result 风格不就行了? Kotlin 哪里不能抛异常了?

qwwuyu

22

qwwuyu      2024 年 10 月 12 日

@jeesk 受检查异常并不能能省下代码.最多是忘记捕获某个特定的异常,导致程序异常.

yuezk

23

yuezk      2024 年 10 月 12 日

感觉是用法问题,还在用 Java 的语言习惯来写 Kotlin

Leviathann

24

Leviathann      2024 年 10 月 12 日

use typed error

niubilewodev

25

niubilewodev      2024 年 10 月 12 日

看下来没看懂。
kotlin 只是去掉了 checked exception 必须要显式处理的特性。
该抛什么错还是一样会抛什么错。
你在 java 怎么 catch 的,在 kotlin 一样能 catch 到。

WebKit

28

WebKit      2024 年 10 月 12 日

感觉是你不会用,或者是你编码习惯的问题。除了成功。其他都是异常情况,必须要处理异常情况,不存在忘记的情况

zed1018

30

zed1018      2024 年 10 月 12 日

我反而讨厌 checked exception ,正常需要处理的肯定会 catch ,不需要处理的就像让他 throw 就完事了,遇到 checked 的还要 catch 以后转 runtime ,当然,我是后端有框架兜底策略。

jeesk

31

jeesk      2024 年 10 月 12 日

@superchijinpeng 你测试一定能测试出所有的 BUG.

场景不一样, 我觉得很多人 get 不到我的点. 如果支持受检测异常, 异常处理只需要在调用处处理异常即可, 但是 kotlin 没有受检异常, 可能会漏掉. 难道我不知道 kotlin 一样能使用 try catch 吗?

我说没有受检异常, 你跑来告诉我可以使用 try catch . 这是一个东西吗?
然后我说使用 try catch 可能会漏掉, 然后你告诉我测试肯定会覆盖.

unco020511

32

unco020511      2024 年 10 月 12 日

这个是你真的不会用了,和语言无关啊

cutiechi

33

cutiechi      2024 年 10 月 12 日

@jeesk #31 你可能会忘,IDE 不会,.try 会自动帮你补全所有情况

githmb

34

githmb      2024 年 10 月 12 日   ❤️ 1

就问你一个问题,空指针异常是不是 Java 程序出问题最多的异常,为什么空指针异常要搞成运行时异常,让这么多人漏掉?

jeesk

35

jeesk      2024 年 10 月 12 日

@githmb 不想回答你. 能不能不要问牛答马 ?

yooomu

36

yooomu      2024 年 10 月 12 日

没看懂你的诉求,checked exception 和 unchecked 的唯一不同就是编译器强制你捕获它。所以是因为 kotlin 编译器没有强制你捕获让你没有安全感吗

catamaran

37

catamaran      2024 年 10 月 12 日

受检异常,这是谁起的名字,我第一次看到

Mystery0

38

Mystery0      2024 年 10 月 12 日

java 里面怎么全局处理?用
```
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
//fuck something
});
```
?

那 kt 也没阉割这个啊,kt 不照样可以写这个

wwalkingg

40

wwalkingg      2024 年 10 月 12 日

1. 题主不熟悉 Kotlin
2. 题主觉得想要语言强制要求处理受查对象。这个特性本身有争议。个人觉得 Kotlin 这样很好,反正最后有一个兜底的异常捕获就行。

Belmode

41

Belmode      2024 年 10 月 12 日 via Android

无力吐槽