gpt4 book ai didi

java - 捕获数组异常

转载 作者:行者123 更新时间:2023-12-01 18:00:33 24 4
gpt4 key购买 nike

大家好,提前致谢。

我在数组代码行中遇到错误。我已阅读有关此问题的所有线程,但仍然无法正确处理异常,导致我的应用程序强制关闭。

这是我的代码...

    public boolean HoraErronea(String HoraAValidar) throws IndexOutOfBoundsException
{
String HoraIntroducida = HoraAValidar;
boolean HoraErronea = false;

if(HoraIntroducida.length() < 3 || HoraIntroducida.length() > 5)
{
HoraErronea = true;
}
else
{
try
{
HoraIntroducida = HoraIntroducida.replace("-", ":");
String[] HoraTroceada = HoraIntroducida.split(":");

int hora = HoraTroceada[0].equals("")?-1:Integer.parseInt(HoraTroceada[0]);
int minuto = HoraTroceada[1].equals("")?-1:Integer.parseInt(HoraTroceada[1]);

if(!((hora >= 0 && hora <= 24) && (minuto >= 0 && minuto <= 59)))
{
HoraErronea = true;
}
}
catch (IndexOutOfBoundsException e)
{
e.printStackTrace();
}
}

return HoraErronea;
}

好吧,问题是当“HoraIntroducida”没有“:”时,那么“HoraTroceada[1]”就不存在,所以我的代码抛出了这个消息......

E/MessageQueue-JNI: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 at com.essimple.essley.FuncionesActivity.HoraErronea(FuncionesActivity.java:366) at com.essimple.essley.CalendarioActivity.ValidaDatos(CalendarioActivity.java:483) at com.essimple.essley.CalendarioActivity.onBackPressed(CalendarioActivity.java:523) at android.app.Activity.onKeyUp(Activity.java:2725) at android.view.KeyEvent.dispatch(KeyEvent.java:2699) at android.app.Activity.dispatchKeyEvent(Activity.java:3026) at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:547) at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:57) at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:315) at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:317) at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4327) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4298) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3849) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3902) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3868) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3995) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3876) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4052) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3849) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3902) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3868) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3876) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3849) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3902) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3868) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4028) at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4189) at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2365) at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1961) at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1952) at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2342) at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:323) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

我知道我可以检查 HoraTroceada 的长度并防止异常,但我想以更好的编码行为来做到这一点,捕获异常。

所以请有人告诉我这有什么问题吗?感谢大家的时间和关注。

最佳答案

要验证空引用,需要使用 if 语句:

Object ref = null;

if(ref != null) {

System.out.println(ref.toString());

}

而不是使用catch语句

关于java - 捕获数组异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41329662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com