Не удалось поймать исключение для плохого URL-адреса в классе JAVA, брошенном классом SCALA

Я пишу программу, которая должна читать данные из онлайн-файла XML. Вычисление выполняется классами, написанными на Scala, если любое исключение поймано, оно должно быть брошено в класс Java, который будет обрабатывать исключения. По какой-то причине я получаю сообщение об ошибке с типом исключения. Какое правильное исключение следует использовать при попытке получить доступ к плохим URL-адресам или к любой другой проблеме (без подключения к Интернету?). Благодаря!

Основной класс (Scala)

object test 
{
  def main(args:Array[String])
  {
    val  x:A =  new A()
  }

}

Класс, который анализирует XML-файл и пытается получить доступ к URL-адресу

import java.net.{URL, URLConnection}
import xml.{XML, Elem}
import java.lang.NullPointerException
import java.io.IOException


class XMLparser {
  @throws(classOf[Exception])
  private val connectionXMLURL = "http://www.boi.org.il/currency.xml1"
  private var urlConnection:URLConnection = null
  private var url:URL = null
  private var doc:Elem = null
  private val currencies = new java.util.LinkedHashMap[String,java.lang.Double]()

  try
  {
    url = new URL(connectionXMLURL)
    urlConnection = url.openConnection
    doc = XML.load(urlConnection.getInputStream)
  }
  catch
    {
      case ex: org.xml.sax.SAXParseException => //is caught!!! and thrown!
      {
        throw  ex
      }
      case e: IOException =>
      {
        throw e
        //add error log!!
      }

      case e: NullPointerException =>
      {
        throw e
        //add error log!!
      }
      case e: Exception =>
      {
        throw e
      }      
    }

}

Класс, который должен поймать исключение (Java)

public class A 
{
    private XMLparser x;
    public A()
    {
        try
        {
            x  = new XMLparser();
        }
        catch(org.xml.sax.SAXParseException e) //Cannot catch it!!??
        {

        }
     /*   catch (Exception e)
        {
             e.printStackTrace();
        } */
    }


}

EDIT: это сообщение об ошибке, которое я получаю при попытке поймать исключение:

scala: warning: [options] bootstrap class path not set in conjunction with -source 1.6
scala: C:\Users\home\Dropbox\Exchange Currency\src\il\hit\currencyExchange\CurrencyExchangeGUI.java:138: error: exception SAXParseException is never thrown in body of corresponding try statement
scala:       catch (org.xml.sax.SAXParseException ex)
1
nl ja de

2 ответы

The problem is that you need to declare that your constructor method (the default one) throws a checked java exception. I saw that you already added the @throws(classOf[Exception]) annotation to your code, but it is slightly misplaced for your purposes. Check this link https://issues.scala-lang.org/browse/SI-1420

Он должен выглядеть

class XMLparser @throws(classOf[Exception]) {

      private val connectionXMLURL = "http://www.boi.org.il/currency.xml1"
      ...
2
добавлено
Спасибо за замечание, пожалуйста, возьмите добычу на выходе, который я только что добавил. благодаря!
добавлено автор undroid, источник
спасибо за помощь, работал как шарм.
добавлено автор undroid, источник
@AlexTal, я отредактировал ответ на основе вашего комментария. Благодарю.
добавлено автор Claudio, источник

For an URLConnection, it can be SocketTimeoutException for both connection and input stream timeouts. It can also be an IOException for an unavailable website. You can find this in the javadoc for URLConnection

1
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Scala User Group
Scala User Group
1 486 участник(ов)

[RU] Scala Chat. Rules, additional links, FAQ: https://telegra.ph/Russian-Speaking-Scala-User-Group-08-27

Scala Jobs
Scala Jobs
852 участник(ов)

Rules: http://telegra.ph/My-lyudi-i-ehto-znachit-chto-nam-nuzhna-organizaciya-02-07 Main Scala Channel: https://t.me/scala_jobs_feed Flood Room: https://t.me/scala_ponv

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async