質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1998閲覧

見たことないコンパイルエラーが出る

rink

総合スコア80

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/12/06 01:13

載せるプログラムだと、 エラー: 例外MalformedURLExceptionは報告されません。スローするには、捕捉または宣言する必要があります
URL theUrl = new URL(args[0]);
^
と出てしまいます。どうすればよいでしょうか?

import java.io.;
import java.net.
;

public class A {
public static void main(String args[]) {
URL theUrl = new URL(args[0]);
try{
HttpURLConnection huc = (HttpURLConnection)theUrl.openConnection();
InputStream instream = huc.getInputStream();
InputStreamReader isreader = new InputStreamReader(instream);
BufferedReader bfreader = new BufferedReader(isreader);
String theLine;

do { theLine = bfreader.readLine(); if( theLine != null ) { System.out.println(theLine); } } while( theLine != null ); } catch (Exception e) { System.err.print(e); } }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/12/06 01:29

コードはマークダウンのcode機能を利用してください。また、タイトルは質問内容に寄せた内容にしてください。汎用的過ぎる内容では「何が起きているか」「何をしたいのか」見ただけでは想像付きませんので。
rink

2018/12/06 01:32

すいません。気をつけます。
m.ts10806

2018/12/06 01:33

質問は編集できるので適宜対応いただければと。
guest

回答2

0

Javaには検査例外というものがあって、検査例外を投げるメソッドを呼ぶ場合には、「throwsを宣言してその例外を外に投げる」あるいは「その例外をcatchする」のどちらかで組まないとコンパイルが通りません。

URLはコンストラクタが検査例外であるMalformedURLExceptionを投げますので(Java 6のリファレンス)、これに対応する必要があります。

投稿2018/12/06 01:18

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rink

2018/12/06 01:21

try{ theUrl = new URL(args[0]); } catch( MalformedURLException A ) { return; } こうすればいいんですか?
maisumakun

2018/12/06 01:25

このようなmain1個だけのコードでしたら、new URLの行をtry{...}の内側に入れてしまうのが手っ取り早いでしょう(Exceptionでまとめて拾ってくれます)。 なお、ある程度以上の規模のコードではExceptionをcatchするのはやめたほうがいいです。
rink

2018/12/06 01:35

なるほど。でも勉強として、do‥whileまでの文を一つ一つtry‥catchでかこいたいです。どうすればよいでしょうか?上記した感じで全文一つ一つ囲えますでしょうか?
rink

2018/12/06 02:02

すみません。Exceptionでまとめて拾ってくれるとありますが、どうして一つ一つtryを書かないでまとめてすべての例外を受け取ることができているのかを教えていただきたいです。
maisumakun

2018/12/06 02:06

ExceptionがMalformedURLExceptionを含め、すべての例外の基底クラスだからです。 その結果、ごちゃ混ぜで拾われてしまうので、例外ごとに対処したい場合には使わないほうがやりやすいです。
rink

2018/12/06 02:08

わかりやすくご丁寧にありがとうございます!助かります””
guest

0

ベストアンサー

エラー: 例外MalformedURLExceptionは報告されません。スローするには、捕捉または宣言する必要があります

MalformedURLExceptionは、指定されたURLのプロトコルが何かわかりませんという例外のことです。
URLコンストラクタはこの例外を投げる可能性があるので、
try-catchで捕捉するなどで対応しましょう。

他の例外と同じですね。

投稿2018/12/06 01:18

dice142

総合スコア5158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rink

2018/12/06 01:22

try{ theUrl = new URL(args[0]); } catch( MalformedURLException A ) { return; } こうすればいいんですか?
dice142

2018/12/06 01:24

書き方はいろいろありますが、その書き方でも可能かと思います。
rink

2018/12/06 01:35

なるほど。でも勉強として、do‥whileまでの文を一つ一つtry‥catchでかこいたいです。どうすればよいでしょうか?上記した感じで全文一つ一つ囲えますでしょうか?
dice142

2018/12/06 01:53

ひとつひとつtry-catchで囲むことは可能ですが、やるメリットがあまりないと思います。 catchはException毎に以下のようにできるので、特別理由がない限りバラバラにする理由はなさそうです。 --- try { ... } catch (xxxException e1) { ... } catch (yyyException e2) { ... } ...
rink

2018/12/06 02:47

わかりやすくありがとうございます。そうなんですね、スッキリしました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問