我正在使用一种从API获取JSON数据的方法,在Java中,每当我使用getJSONObject
时,都必须用try / catch包围该方法,因为它检测到该方法抛出了{{1 }},我希望能够迫使程序员在使用Kotlin时围绕我的函数。
我要执行此操作的方法如下:
JSONException
但是,当在另一个文件中调用此方法时,不会强制我在try / catch中包围该方法。
有没有办法做到这一点,或者有没有更好的方法来实现这种逻辑?
答案 0 :(得分:0)
答案 1 :(得分:0)
Kotlin没有检查过的异常。 <table class="table_1">
<tbody>
<tr>
<td><span class="num">1</span></td>
<td><span class="cc">Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
</tr>
<tr>
<td><span class="num">2</span></td>
<td><span class="cc">Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal mLorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
</tr>
<tr>
<td><span class="num">3</span></td>
<td><span class="cc">Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
</tr>
<tr>
<td><span class="num">4</span></td>
<td><span class="cc">Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
</tr>
<tr>
<td><span class="num">5</span></td>
<td><span class="">Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
</tr>
</tbody>
</table>
<p></p>
仅强制Java代码检查异常,而对Kotlin代码没有影响。
一种选择是使用密封类,该类可以返回期望的结果或错误。
@Throws
sealed class HitEventsResult {
data class Success(val value: List<AlgoliaEvent>): HitEventsResult()
data class Failure(val exception: JSONException): HitEventsResult()
}
然后在呼叫站点:
fun parseHitEvents(jsonObject: JSONObject): HitEventsResult {
try {
// your original code for getting the results...
return HitEventsResult.Success(results)
} catch (e: JSONException){
return HitEventsResult.Failure(e)
}
}
或者如果您想重新投掷:
val hitEventsResult = parseHitEvents(jsonObject)
when (hitEventsResult){
is Success -> TODO() // do something with result.value
is Failure -> TODO()
}