C# 如何捕捉KnownFolders.SampleVideos无法在WIN8.1上使用的异常

时间:2020-12-19 18:50:07
写的一个打开文件的函数。点击“选择”按钮会调用它。函数如下。

//file open
            ShellContainer selectedFolder4 = KnownFolders.SampleVideos as ShellContainer;
            CommonOpenFileDialog cfd4 = new CommonOpenFileDialog();
            cfd4.InitialDirectoryShellContainer = selectedFolder4;
            cfd4.EnsureReadOnly = true;
            cfd4.Filters.Add(new CommonFileDialogFilter("ALL Files", "*.*"));
            cfd4.Filters.Add(new CommonFileDialogFilter("MP4 Files", "*.mp4"));
            cfd4.Filters.Add(new CommonFileDialogFilter("WMV Files", "*.wmv"));
            cfd4.Filters.Add(new CommonFileDialogFilter("AVI Files", "*.avi"));
            cfd4.Filters.Add(new CommonFileDialogFilter("MP3 Files", "*.mp3"));

            if (cfd4.ShowDialog() == CommonFileDialogResult.OK)
            {
                textBoxurl4.Text = "file:///" + cfd4.FileName;
            }

这段代码在WIN7下运行没有任何问题,因为KnownFolders.SampleVideos对应的“C:\Users\Public\Videos\Sample Videos”路径是存在的。
然而在WIN8.1下运行就会出错,因为WIN8.1下的路劲只有“C:\Users\Public\Videos”,并没有SampleVideos文件夹。
其实简单的处理方法可以不指定打开路径。但是项目要求捕捉异常,我尝试用try catch也没有用,也没有找到合理的获取方法。

报错内容如下:
用户代码未处理ArgumentException
Given Known Folder ID is invalid.
参数名:KnownFolderID


大神们帮帮忙把
C# 如何捕捉KnownFolders.SampleVideos无法在WIN8.1上使用的异常

5 个解决方案

#1


trycatch没用说明你写错地方或者catch的异常不对

#2


引用 1 楼 shingoscar 的回复:
trycatch没用说明你写错地方或者catch的异常不对

我是这样写的

try
      {
            ShellContainer selectedFolder4 = KnownFolders.SampleVideos as ShellContainer;
            CommonOpenFileDialog cfd4 = new CommonOpenFileDialog();
            cfd4.InitialDirectoryShellContainer = selectedFolder4;
       }
       catch (MediaPlayer.MPException)
        {
        textBox1.Text = "  error ! FileOpen ";
        }

还有就是当我捕捉到这个异常是,想把selectedFolder4 置成空,然后进行区别处理

#3


异常明明是ArgumentException,你却要捕捉MediaPlayer.MPException,当然捉不到了

#4


引用 3 楼 shingoscar 的回复:
异常明明是ArgumentException,你却要捕捉MediaPlayer.MPException,当然捉不到了

啊哦。那应该怎么写?新手对捕捉异常有点懵。

#5


引用 3 楼 shingoscar 的回复:
异常明明是ArgumentException,你却要捕捉MediaPlayer.MPException,当然捉不到了

非常感觉你的回答,也给我指点的方向。后来我在microsoft网站上看了一下ArgumentException异常的说明。只要把catch的内容改成ArgumentException就能成功。谢谢。

#1


trycatch没用说明你写错地方或者catch的异常不对

#2


引用 1 楼 shingoscar 的回复:
trycatch没用说明你写错地方或者catch的异常不对

我是这样写的

try
      {
            ShellContainer selectedFolder4 = KnownFolders.SampleVideos as ShellContainer;
            CommonOpenFileDialog cfd4 = new CommonOpenFileDialog();
            cfd4.InitialDirectoryShellContainer = selectedFolder4;
       }
       catch (MediaPlayer.MPException)
        {
        textBox1.Text = "  error ! FileOpen ";
        }

还有就是当我捕捉到这个异常是,想把selectedFolder4 置成空,然后进行区别处理

#3


异常明明是ArgumentException,你却要捕捉MediaPlayer.MPException,当然捉不到了

#4


引用 3 楼 shingoscar 的回复:
异常明明是ArgumentException,你却要捕捉MediaPlayer.MPException,当然捉不到了

啊哦。那应该怎么写?新手对捕捉异常有点懵。

#5


引用 3 楼 shingoscar 的回复:
异常明明是ArgumentException,你却要捕捉MediaPlayer.MPException,当然捉不到了

非常感觉你的回答,也给我指点的方向。后来我在microsoft网站上看了一下ArgumentException异常的说明。只要把catch的内容改成ArgumentException就能成功。谢谢。