no message

This commit is contained in:
a-kizaki
2026-10-06 12:10:09 +09:00
commit 9c2090ffa2
156 changed files with 14850 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
<?php
/**
* [Ex01 例外処理基本]
*
* TODO:
* 1. 関数 divide($numerator, $denominator) を作成してください。
* - $denominator が 0 の場合、Exception を投げる。
* - 正常な場合は、$numerator / $denominator の結果を返す。
*
* 2. GETリクエストで分子(num)と分母(den)の値を受け取り、divide() を呼び出す処理を実装してください。
*
* 3. 例外が発生した場合は try-catch ブロックで捕捉し、「Error: {エラーメッセージ}」と出力すること。
*
*
*/

View File

@@ -0,0 +1,14 @@
<?php
/**
* [Ex02 例外の伝播]
*
* TODO:
* 1. innerFunction($value) を作成し、$value が負の場合に Exception を投げるようにしてください。
*
* 2. outerFunction($value) を作成し、内部で innerFunction($value) を呼び出すが、例外は捕捉せず伝播させること。
*
* 3. メイン部分で outerFunction() を呼び、try-catch ブロックで例外を捕捉してエラーメッセージを出力すること。
*
*
*/

View File

@@ -0,0 +1,26 @@
<?php
/**
* [Ex03 例外キャッチの記述順序修正]
*
* TODO:
* 以下のコードは、例外キャッチの順序が誤っています。正しく、より具体的な例外を先にキャッチするように修正してください。
*
* --- 修正前のコード ---
*
* try {
* if (rand(0,1)) {
* throw new InvalidArgumentException("Invalid argument provided.");
* } else {
* throw new Exception("General exception occurred.");
* }
* } catch (Exception $e) {
* echo "Caught Exception: " . $e->getMessage();
* } catch (InvalidArgumentException $e) {
* echo "Caught InvalidArgumentException: " . $e->getMessage();
* }
*
* --- ここまで ---
*
*
*/

View File

@@ -0,0 +1,22 @@
<?php
/**
* [Ex04 カスタム例外の利用 - CSVファイル処理]
*
* 難易度:中級
*
* TODO:
* 1. 以下の仕様に従って、カスタム例外クラスを作成してください。
* (1) FileNotFoundException クラスを作成し、Exception を継承する。
* (2) CSVFormatException クラスを作成し、Exception を継承する。
*
* 2. 関数 processCSV($filename) を作成してください。
* - $filename が "data.csv" でない場合は、FileNotFoundException を投げる。
* - $filename が "data.csv" の場合、仮のCSVデータ(例: "John,25,Engineer\nAlice,30,Designer")を用い、
* 各行がカンマで区切られているかをチェックし、問題があれば CSVFormatException を投げる。
* - 正常な場合は、各行を配列に変換して返す。
*
* 3. メイン部分で、processCSV() を呼び出し、try-catch ブロックで例外を捕捉し、適切なエラーメッセージを出力してください。
*
*
*/

View File

@@ -0,0 +1,20 @@
<?php
/**
* [Ex05 上級 例外処理 - 実在するAPIへの呼び出し]
*
* 難易度:上級
*
* TODO:
* 1. 関数 callAPI($url) を作成してください。
* - $url が有効なURL形式でない場合は、InvalidArgumentException を投げる。
* - $url を用いて、実在するAPI(例:"https://jsonplaceholder.typicode.com/todos/1")への GET リクエストを行う。
* - API呼び出しに失敗した場合は、RuntimeException を投げる。
* - 正常に呼び出せた場合は、APIからのレスポンス(文字列)を返す。
*
* 2. callAPI() を呼び出す際、try-catch-finally ブロックを使用してください。
* - InvalidArgumentException と RuntimeException を個別にキャッチし、エラーメッセージを出力する。
* - finally ブロックで「API call attempt finished.」というメッセージを必ず出力する。
*
*
*/

View File

@@ -0,0 +1,133 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PHP 例外処理問題 スタートページ</title>
<link href="../common/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="page-header">
<h1>PHP 例外処理問題 </h1>
</div>
<div class="panel-group" id="accordion">
<!-- Ex01: 例外処理基本 (GET: num, den) -->
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseEx01">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Ex01: 例外処理基本
</a>
<small>初級</small>
</h4>
</div>
<div id="collapseEx01" class="panel-collapse collapse">
<div class="panel-body">
<!-- GETフォーム for Ex01.php -->
<form method="get" action="Ex01.php" target="_blank" class="form-inline">
<div class="form-group">
<label for="num">分子 (num):</label>
<input type="number" class="form-control" name="num" id="num" value="10">
</div>
<div class="form-group">
<label for="den">分母 (den):</label>
<input type="number" class="form-control" name="den" id="den" value="2">
</div>
<button type="submit" class="btn btn-primary">実行</button>
</form>
</div>
</div>
</div>
<!-- Ex02: 例外の伝播 (GET: value) -->
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseEx02">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Ex02: 例外の伝播
</a>
<small>初級</small>
</h4>
</div>
<div id="collapseEx02" class="panel-collapse collapse">
<div class="panel-body">
<!-- GETフォーム for Ex02.php -->
<form method="get" action="Ex02.php" target="_blank" class="form-inline">
<div class="form-group">
<label for="value">値 (value):</label>
<input type="number" class="form-control" name="value" id="value" value="5">
</div>
<button type="submit" class="btn btn-primary">実行</button>
</form>
</div>
</div>
</div>
<!-- Ex03: 例外キャッチ記述順序修正 (リンクのみ) -->
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a href="Ex03.php" target="_blank">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Ex03: 例外キャッチの記述順序修正
</a>
<small>初級</small>
</h4>
</div>
</div>
<!-- Ex04: カスタム例外とCSV処理 (リンクのみ) -->
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a href="Ex04.php" target="_blank">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Ex04: カスタム例外とCSV処理
</a>
<small>中級</small>
</h4>
</div>
</div>
<!-- Ex05 -->
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseEx05">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Ex05: API呼び出しの例外処理(現場寄り)
</a>
<small>上級</small>
</h4>
</div>
<div id="collapseEx05" class="panel-collapse collapse">
<div class="panel-body">
<!-- GETフォーム for Ex05.php -->
<form method="get" action="Ex05.php" target="_blank" class="form-inline">
<div class="form-group">
<label for="url">URL:</label>
<input type="text" class="form-control" name="url" id="url"
value="https://jsonplaceholder.typicode.com/todos/1">
</div>
<button type="submit" class="btn btn-primary">実行</button>
</form>
</div>
</div>
</div>
</div>
</div>
<!-- jQuery -->
<script src="../common/js/jquery-3.2.1.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="../common/js/bootstrap.min"></script>
</body>
</html>