iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
Software Development

【30歲學Coding轉職心法】從0到1的C#軟體工程師之路系列 第 28

【30歲學Coding轉職心法】從0到1的C#軟體工程師之路-28.擅用開發工具學C#(7)看懂錯誤訊息與除錯

  • 分享至 

  • xImage
  •  

初學者練習開發程式的過程中,必定會常常遇到如下圖「紅色波浪底線」的錯誤,這樣的錯誤意味著語法本身就有問題,必須先排除才能進行偵錯與執行程式。處理這種錯誤的能力是學習階段時,必定要讓自己學會的重要能力!
https://ithelp.ithome.com.tw/upload/images/20230928/20160592VViwwdqorq.png

● 判讀錯誤訊息

當我們將滑鼠移至紅色波浪錯誤位置,Visual Studio就會提示錯誤訊息,以下圖為例,顯示「名稱'xxxxxxx'不存在於目前的內容中」,這個問題在前幾天講Nuget套件的時候有看過了,需要安裝套件並引用指示詞using AngleSharp;便能解決錯誤。
https://ithelp.ithome.com.tw/upload/images/20230928/20160592l7qIDNQWfv.png

https://ithelp.ithome.com.tw/upload/images/20230928/201605921RTe7ID8lE.png

再舉個例子,以下圖問題來看是!=前後分別是intstring,因此無法進行比較發生錯誤,此時把後面的"1"拿掉雙引號,便能消除錯誤。
https://ithelp.ithome.com.tw/upload/images/20230928/20160592B4tm7nHgtQ.png

● 除錯範例程式碼

下面程式碼可以供初學者練習,如果是自己新建專案請建立ConsleApp專案,注意namespace名稱要改成與專案名稱相同。新建完成後新增一個類別名為WebCrawlerService,再將下面程式碼完全覆蓋該類別檔案的內容,即可進行練習。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    public class WebCrawlerService
    {
        public static async Task Crawl(string keyword,string url)
        {
            // 建立 AngleSharp 的配置
            var config = Configuration.Default.WithDefaultLoader();

            // 使用 AngleSharp 連線到網站並取得文件
            var document = await BrowsingContext.New(config).OpenAsync(url);

            // 找到分頁列中的最後一頁頁碼
            var lastPage = 1;
            var nextPageLink = document.QuerySelector(".pagination li:last-child a");
            var lastLi = document.QuerySelector(".pagination li:last-child");
            var lastPageLink = lastLi.PreviousElementSibling
            if (lastPageLink != null)
            {
                lastPage = int.Parse(lastPageLink.TextContent);
                if (lastPage != "1")
                    Console.WriteLine($"最後一頁的頁碼為:{lastPage}");
                else
                    Console.WriteLine("此網站沒有分頁");
            }
            else
                Console.WriteLine("找不到最後一頁的頁碼");



            // 取得網站中所有文章的標題
            var titles = new List<string>();
            for (int i = 1; i <= lastPage; i++)
            {
                var qureyUrl = $@"{url}&page={i}";
                document = await BrowsingContext.New(config).OpenAsync(qureyUrl);
                var contents = document.QuerySelectorAll(".qa-list__title a")
                .Where(a => a.TextContent.IndexOf(
                            keyword, StringComparison.OrdinalIgnoreCase) >= 0)
                .Select(a => a.TextContent);

                titles.AddRange(contents);
            }


            // 顯示搜尋結果
            Console.WriteLine($"以下是符合 \"{keyword}\" 關鍵字的文章標題:");
            Console.WriteLine();

            foreach (var title in titles)
            {
                Console.WriteLine(title);
            }

            Console.ReadLine();
        }
    }
}

● 小結

排除語法錯誤是工程師基本必備技能,如果連語法都有問題是無法進行編譯與偵錯的,初學者必定要掌握這個技能,才不會一直被困在語法問題,而能朝下一個階段邁進!


上一篇
【30歲學Coding轉職心法】從0到1的C#軟體工程師之路-27.擅用開發工具學C#(6)查看定義與尋找參考
下一篇
【30歲學Coding轉職心法】從0到1的C#軟體工程師之路-29.擅用開發工具學C#(8)例外處理
系列文
【30歲學Coding轉職心法】從0到1的C#軟體工程師之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言